#include <bits/stdc++.h>
using namespace std;
int max(int a,int b){
int max;
if(a>=b){max=a;}
else{max=b;}
return max;
}
int x[1002][1002];
int main() {
string a,b;
getline(cin,a);
getline(cin,b);
for(int i = a.length();i>=0;i--){
for(int j = b.length();j>=0;j--){
if(i==a.length() or j==b.length()){
x[i][j]=0;
}
else if(a[i]==b[j]){
x[i][j]=x[i+1][j+1]+1;
}
else{
x[i][j]=max(x[i][j+1],x[i+1][j]);
}
}
}
cout<<x[0][0]<<endl;
for(int i = 0;i<a.length();i++){
for(int j = 0;j<b.length();j++){
cout<<x[i][j]<<' ';
}
cout<<endl;
}
cout<<a<<endl<<b<<endl;
vector<char> v;
int q=a.length()-1,w=b.length()-1,ans=0;
while(ans!=x[0][0]){
cout<<a[q]<<' '<<b[w]<<endl;
if(x[q][w]==x[q][w-1]+1 && x[q][w]==x[q-1][w]+1 && x[q][w]==x[q-1][w-1]+1){ans++;v.push_back(a[q]);q--;w--;}
else if(x[q][w-1]==x[q-1][w]){w--;q--;cout<<x[q][w]<<x[q-1][w-1]<<x[q-1][w]<<x[q][w-1]<<endl;}
else if(x[q][w-1]>x[q-1][w]){w--;}
else{q--;}
}
for(int i = ans-1;i>=0;i++){
cout<<v[i];
}
cout<<endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBtYXgoaW50IGEsaW50IGIpewoJaW50IG1heDsKCWlmKGE+PWIpe21heD1hO30KCWVsc2V7bWF4PWI7fQoJcmV0dXJuIG1heDsKfQppbnQgeFsxMDAyXVsxMDAyXTsKaW50IG1haW4oKSB7CglzdHJpbmcgYSxiOwoJZ2V0bGluZShjaW4sYSk7CglnZXRsaW5lKGNpbixiKTsKCWZvcihpbnQgaSA9IGEubGVuZ3RoKCk7aT49MDtpLS0pewoJCWZvcihpbnQgaiA9IGIubGVuZ3RoKCk7aj49MDtqLS0pewoJCQlpZihpPT1hLmxlbmd0aCgpIG9yIGo9PWIubGVuZ3RoKCkpewoJCQkJeFtpXVtqXT0wOwoJCQl9CgkJCWVsc2UgaWYoYVtpXT09YltqXSl7CgkJCQl4W2ldW2pdPXhbaSsxXVtqKzFdKzE7CgkJCX0KCQkJZWxzZXsKCQkJCXhbaV1bal09bWF4KHhbaV1baisxXSx4W2krMV1bal0pOwoJCQl9CgkJfQoJfQoJY291dDw8eFswXVswXTw8ZW5kbDsKCWZvcihpbnQgaSA9IDA7aTxhLmxlbmd0aCgpO2krKyl7CgkJZm9yKGludCBqID0gMDtqPGIubGVuZ3RoKCk7aisrKXsKCQkJY291dDw8eFtpXVtqXTw8JyAnOwoJCX0KCQljb3V0PDxlbmRsOwoJfQoJY291dDw8YTw8ZW5kbDw8Yjw8ZW5kbDsKCXZlY3RvcjxjaGFyPiB2OwoJaW50IHE9YS5sZW5ndGgoKS0xLHc9Yi5sZW5ndGgoKS0xLGFucz0wOwoJd2hpbGUoYW5zIT14WzBdWzBdKXsKCQljb3V0PDxhW3FdPDwnICc8PGJbd108PGVuZGw7CgkJaWYoeFtxXVt3XT09eFtxXVt3LTFdKzEgJiYgeFtxXVt3XT09eFtxLTFdW3ddKzEgJiYgeFtxXVt3XT09eFtxLTFdW3ctMV0rMSl7YW5zKys7di5wdXNoX2JhY2soYVtxXSk7cS0tO3ctLTt9CgkJZWxzZSBpZih4W3FdW3ctMV09PXhbcS0xXVt3XSl7dy0tO3EtLTtjb3V0PDx4W3FdW3ddPDx4W3EtMV1bdy0xXTw8eFtxLTFdW3ddPDx4W3FdW3ctMV08PGVuZGw7fQoJCWVsc2UgaWYoeFtxXVt3LTFdPnhbcS0xXVt3XSl7dy0tO30KCQllbHNle3EtLTt9Cgl9Cglmb3IoaW50IGkgPSBhbnMtMTtpPj0wO2krKyl7CgkJY291dDw8dltpXTsKCX0KCWNvdXQ8PGVuZGw7CglyZXR1cm4gMDsKfQ==