#include<bits/stdc++.h>
using namespace std;
#define debug(x) cerr<<#x<<' '<<x<<endl
#ifndef ONLINE_JUDGE
#define pia getchar
#else
#define pia nc
#endif
char nc(){
static char buf[1<<25],*p=buf,*q=buf;
if(p==q&&(q=(p=buf)+fread(buf,1,1<<25,stdin),p==q))return EOF;
return *p++;
}
template<class T>void rd(T&x){
short f=1;x=0;
char ch=pia();
while(!isdigit(ch)){
if(ch=='-')f=-1;
ch=pia();
}while(isdigit(ch)){
x=(x<<1)+(x<<3)+(ch^48);
ch=pia();
}x*=f;
}
template<class T>void wr(T x){
if(x<0)putchar('-'),x=-x;
if(x>=10)wr(x/10);
putchar(x%10+48);
}
#define maxn 4005
int n,m;
unsigned short ans;
char a[maxn],b[maxn];
unsigned short f[maxn][maxn];
signed main(){
scanf("%s%s",a+1,b+1);
n=strlen(a+1),m=strlen(b+1);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i]==b[j]){
f[i][j]=f[i-1][j-1]+1;
ans=max(ans,f[i][j]);
}
wr(ans);
}