#include <bits/stdc++.h>
#define ll long long
#define st first
#define nd second
using namespace std;
set <string> v;
string s1,s2;
struct edge
{
string s;
ll pos1,pos2;
};
map <string,ll> _cnt;
const ll maxn=81;
ll n,m;
ll dp[maxn][maxn];
ll cnt=0;
vector <edge> danhsach[maxn];
int main()
{
cin>>s1>>s2;
s1=' '+s1;
s2=' '+ s2;
n=s1.size();
m=s2.size();
for (ll i=1;i<=n;i++)
for (ll j=1;j<=m;j++){
if (s1[i]==s2[j])
{
dp[i][j]=dp[i-1][j-1]+1;
string _st="";
_st+=s1[i];
if (dp[i][j]==1)
danhsach[dp[i][j]].push_back({_st,i,j});
else
for (edge it:danhsach[dp[i][j]-1])
{
string s=it.s;
ll _i=it.pos1,_j=it.pos2;
if (_i<i and _j<j)
{
string _s=s+s1[i];
danhsach[dp[i][j]].push_back({_s,i,j});
}
}
}
else
dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
cnt=max(cnt,dp[i][j]);
}
for (edge it:danhsach[cnt])
{
v.insert(it.s);
}
cout<<v.size()<<'\n';
for (ll i=danhsach[cnt].size()-1;i>=0;i--)
{
if (!_cnt[danhsach[cnt][i].s])
{
_cnt[danhsach[cnt][i].s]=1;
cout<<danhsach[cnt][i].s<<'\n';
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgc3QgZmlyc3QKI2RlZmluZSBuZCBzZWNvbmQKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc2V0IDxzdHJpbmc+IHY7CnN0cmluZyBzMSxzMjsKc3RydWN0IGVkZ2UKewogICAgc3RyaW5nIHM7CiAgICBsbCBwb3MxLHBvczI7Cn07Cm1hcCA8c3RyaW5nLGxsPiBfY250Owpjb25zdCBsbCBtYXhuPTgxOwpsbCBuLG07CmxsIGRwW21heG5dW21heG5dOwpsbCBjbnQ9MDsKdmVjdG9yIDxlZGdlPiBkYW5oc2FjaFttYXhuXTsKaW50IG1haW4oKQp7CiAgICBjaW4+PnMxPj5zMjsKICAgIHMxPScgJytzMTsKICAgIHMyPScgJysgczI7CiAgICBuPXMxLnNpemUoKTsKICAgIG09czIuc2l6ZSgpOwogICAgZm9yIChsbCBpPTE7aTw9bjtpKyspCiAgICBmb3IgKGxsIGo9MTtqPD1tO2orKyl7CiAgICAgICAgaWYgKHMxW2ldPT1zMltqXSkKICAgICAgICB7CiAgICAgICAgICAgIGRwW2ldW2pdPWRwW2ktMV1bai0xXSsxOwogICAgICAgICAgICBzdHJpbmcgX3N0PSIiOwogICAgICAgICAgICBfc3QrPXMxW2ldOwogICAgICAgICAgICBpZiAoZHBbaV1bal09PTEpCiAgICAgICAgICAgIGRhbmhzYWNoW2RwW2ldW2pdXS5wdXNoX2JhY2soe19zdCxpLGp9KTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZm9yIChlZGdlIGl0OmRhbmhzYWNoW2RwW2ldW2pdLTFdKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJpbmcgcz1pdC5zOwogICAgICAgICAgICAgICAgbGwgX2k9aXQucG9zMSxfaj1pdC5wb3MyOwogICAgICAgICAgICAgICAgaWYgKF9pPGkgYW5kIF9qPGopCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nIF9zPXMrczFbaV07CiAgICAgICAgICAgICAgICAgICAgZGFuaHNhY2hbZHBbaV1bal1dLnB1c2hfYmFjayh7X3MsaSxqfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgICBkcFtpXVtqXT1tYXgoZHBbaV1bai0xXSxkcFtpLTFdW2pdKTsKICAgICAgICBjbnQ9bWF4KGNudCxkcFtpXVtqXSk7CiAgICB9CiAgICBmb3IgKGVkZ2UgaXQ6ZGFuaHNhY2hbY250XSkKICAgIHsKICAgICAgICB2Lmluc2VydChpdC5zKTsKICAgIH0KICAgIGNvdXQ8PHYuc2l6ZSgpPDwnXG4nOwogICAgZm9yIChsbCBpPWRhbmhzYWNoW2NudF0uc2l6ZSgpLTE7aT49MDtpLS0pCiAgICB7CiAgICAgICAgaWYgKCFfY250W2RhbmhzYWNoW2NudF1baV0uc10pCiAgICAgICAgewogICAgICAgIF9jbnRbZGFuaHNhY2hbY250XVtpXS5zXT0xOwogICAgICAgIGNvdXQ8PGRhbmhzYWNoW2NudF1baV0uczw8J1xuJzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQo=