#include <bits/stdc++.h>
using namespace std;
char a[10000007],b[10000007];
int dp[10000007];
int main()
{
while(1)
{
scanf("%s%s",a,b);
int acd=strlen(a);//计算a和b字符串长度
int bcd=strlen(b);
int maxn=0,jl;//maxn用来记录最长后缀,jl记录maxn出现时公共字符串位置。
memset(dp,0,(sizeof (int))*(bcd+1));//把dp置0,初始化。
for(int i=0;i<acd;i++)
{
for(int j=bcd-1;j>=0;j--)
{
dp[j+1]=a[i]==b[j]?dp[j]+1:0;//核心代码,状态转移。
if(maxn<dp[j+1])
{
maxn=dp[j+1];//更新maxn与jl
jl=i-maxn+1;
}
}
}
printf("%d\n",maxn);//输出
for(int i=jl;i<jl+maxn;i++)
{
printf("%c",a[i]);
}
printf("\n");
}
}