#include<cstdio>
#include<cstring>
int n,m,len,f[110][110];
char s1[110],s2[110],path[110];
int max(int a,int b){return a>b?a:b;}
void dfs(int i,int j,int u)
{
if(u>len) {puts(path+1);return;}
if(s1[i]==s2[j]) {path[u]=s1[i];dfs(i+1,j+1,u+1);}
else
for(int k=0;k<26;k++)
{
int a=0,b=0;
for(int x=i;x<=n;x++) if(s1[x]=='a'+k) {a=x;break;}
for(int x=j;x<=m;x++) if(s2[x]=='a'+k) {b=x;break;}
if(a && b && f[a][b]==f[i][j]) dfs(a,b,u);
}
}
int main()
{
scanf("%s%s",s1+1,s2+1);
n=strlen(s1+1),m=strlen(s2+1);
for(int i=n;i;i--)
for(int j=m;j;j--)
if(s1[i]==s2[j]) f[i][j]=f[i+1][j+1]+1;
else f[i][j]=max(f[i+1][j],f[i][j+1]);
len=f[1][1];dfs(1,1,1);
return 0;
}