#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
char a[1005],b[1005],s[1005];
int dp[1005][1005];
int main()
{
cin>>a>>b;
memset(dp,0,sizeof(dp));
memset(s,0,sizeof(s));
int m=strlen(a);
int n=strlen(b);
int i,j;
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
if(a[i-1]==b[j-1])
{
dp[i][j]=dp[i-1][j-1]+1;
}
else
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
}
int k=0;
while(dp[m][n])
{
if(dp[m][n]==dp[m-1][n])
m--;
else if(dp[m][n]==dp[m][n-1])
n--;
else if(dp[m][n]!=dp[m-1][n-1])
{
s[k++]=a[m-1];
m--;
n--;
}
}
for(i=k-1;i>=0;i--)
cout<<s[i];
return 0;
}