#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

int zo[2][4010]={};
int dp[2][4010];
char ar1[4010],ar2[4010];
int main(){
	int l1,l2,I,O,hog,cnt;
	while(true){
		cin>>ar1;
		if(cin.eof()) break;
		cin>>ar2;
		l1=strlen(ar1);
		l2=strlen(ar2);
		I=1;O=0;
		memset(zo[I],0,sizeof(zo[I]));
		memset(dp[I],0,sizeof(dp[I]));
		cnt=0;
		for(int i=0;i<l1;i++){
			for(int j=0;j<l2;j++){
				if(ar1[i]==ar2[j]){
					if(i!=0&&j!=0){
						zo[O][j]=zo[I][j-1]+1;
					}
					else{
						zo[O][j]=1;
					}
				}
				else{
					zo[O][j]=0;
				}
			}
			for(int j=0;j<l2;j++){
				cnt=max(cnt,zo[O][j]);
			}
			swap(I,O);
		}
		cout<<cnt<<endl;
	}
	return 0;
}