#include<iostream>
#include<string.h>
using namespace std;
int c[10000][10000];
char str1[10000];
char str2[10000];
void func(int m,int n){
if((m<0)||(n<0)) return ;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++) c[i][j]=0;
int besti=0,bestj=0;
int count=0;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
if(str1[i]==str2[j]) {
if((i==0)||(j==0)) c[i][j]=1; //增加判断是否为第一个,第一个不能再向下
else c[i][j]=c[i-1][j-1] + 1 ;
}
else c[i][j]=0;
/*
for(int i=0;i<m;i++){
for(int j=0;j<n;j++)
cout<<c[i][j]<<' ';
cout<<endl;
}
*/
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
if(c[i][j]>count) { count=c[i][j]; besti=i; bestj=j; } //查找最长子字符串
cout<<count<<endl;
if(count==0) cout<<endl; //公共子字符串长度为1,输出空行
else
for(int i=besti-count+1;i<=besti;i++)
cout<<str1[i]; //否则输出靠X左边(如果多个)子字符串
}
int main() {
int m=0;
int n=0;
cin>>str1;
cin>>str2;
m=strlen(str1);
n=strlen(str2);
func(m,n);
return 0;
}