#include<cstdio>
#include<cstring>
using namespace std;
char a[],b[];
int sa[],x[],wv[],ws[],h[],rank[],wa[],wb[];
int cmp(int *r,int a,int b,int l){return (r[a]==r[b])&&(r[a+l]==r[b+l]);}
void calheight(int n,int *rank)
{
  int i,j,k=;
  for(i=;i<n;h[rank[i++]]=k)
  for(k?k--:,j=sa[rank[i]-];a[i+k]==a[j+k];k++);
}
void DA(char *r,int *sa,int n,int m)
{
  int i,j,k,*x=wa,*y=wb,*t,p;
  for(i=;i<m;i++)ws[i]=;
  for(i=;i<n;i++)ws[x[i]=r[i]]++;
  for(i=;i<m;i++)ws[i]+=ws[i-];
  for(i=n-;i>=;i--)sa[--ws[x[i]]]=i;
  for(j=,p=;p<n;j*=,m=p)
  {
    for(p=,i=n-j;i<n;i++)y[p++]=i;
    for(i=;i<n;i++)if(sa[i]>=j)y[p++]=sa[i]-j;
    for(i=;i<n;i++)wv[i]=x[y[i]];
    for(i=;i<m;i++)ws[i]=;
    for(i=;i<n;i++)ws[wv[i]]++;
    for(i=;i<m;i++)ws[i]+=ws[i-];
    for(i=n-;i>=;i--)sa[--ws[wv[i]]]=y[i];
    for(t=x,x=y,y=t,p=,x[sa[]]=,i=;i<n;i++)
    x[sa[i]]=cmp(y,sa[i-],sa[i],j)?p-:p++;
  }
  calheight(n,x);
}
int main()
{
  int la,lb,f_b,f_e,s_b,s_e,max,i,n;
  scanf("%s",a);
  la=strlen(a);
  scanf("\n");
  scanf("%s",b);
  lb=strlen(b);
  f_b=;
  f_e=la-;
  a[la]='#';
  s_b=la;
  for(i=;i<lb;i++)a[++la]=b[i];
  s_e=la;
  a[la+]=;
  DA(a,sa,la+,);
  //calheight(la+1);
  max=-0x7fffffff;
  for(i=;i<=la;i++)
  {
    if(h[i]>max&&((sa[i]>=f_b&&sa[i]<=f_e&&sa[i-]>=s_b&&sa[i-]<=s_e)||(sa[i]>=s_b&&sa[i]<=s_e&&sa[i-]>=f_b&&sa[i-]<=f_e)))max=h[i];
  }
  printf("%d",max);
  return ;
}
05-04 00:11