#include <iostream>
#include <string.h>
#include <stdio.h>
#include <vector>
using namespace std;
int maxlen;
const string LCS(const string &str1, const string &str2)
{
int xlen = str1.size();
vector<int> tmp(xlen);
vector<int> arr(xlen);
int ylen = str2.size();
maxlen = 0;
int pos = 0;
for( int i = 0; i < ylen; i++)
{
string s = str2.substr(i,1);
arr.assign(xlen,0);
for( int j = 0; j < xlen; j++)
{
if(str1.compare(j,1,s) == 0)
{
if(j == 0)
arr[j] = 1;
else
arr[j] = tmp[j-1] + 1;
if( arr[j] > maxlen)
{
maxlen = arr[j];
pos = j;
}
}
}
tmp.assign(arr.begin(),arr.end());
}
string res=str1.substr(pos-maxlen+1,maxlen);
return res;
}
int main()
{
string str1, str2;
while(cin>>str1>>str2)
{
string str;
str = LCS(str1, str2);
cout<<maxlen<<" "<<str<<endl;
}
}
#include <string.h>
#include <stdio.h>
#include <vector>
using namespace std;
int maxlen;
const string LCS(const string &str1, const string &str2)
{
int xlen = str1.size();
vector<int> tmp(xlen);
vector<int> arr(xlen);
int ylen = str2.size();
maxlen = 0;
int pos = 0;
for( int i = 0; i < ylen; i++)
{
string s = str2.substr(i,1);
arr.assign(xlen,0);
for( int j = 0; j < xlen; j++)
{
if(str1.compare(j,1,s) == 0)
{
if(j == 0)
arr[j] = 1;
else
arr[j] = tmp[j-1] + 1;
if( arr[j] > maxlen)
{
maxlen = arr[j];
pos = j;
}
}
}
tmp.assign(arr.begin(),arr.end());
}
string res=str1.substr(pos-maxlen+1,maxlen);
return res;
}
int main()
{
string str1, str2;
while(cin>>str1>>str2)
{
string str;
str = LCS(str1, str2);
cout<<maxlen<<" "<<str<<endl;
}
}