#include
#include
#include
using namespace std;
int dp[1000][1000]={0};
stack s;
void lcs(char s1[],char s2[])
{
int m=strlen(s1);
int n=strlen(s2);
for(int i=0;i<=m;i++)dp[0][i]=0;
for(int i=0;i<=n;i++)dp[i][0]=0;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
int q=0;
if(s1[i-1]==s2[j-1])
{
q=1+dp[i-1][j-1];
}else{
q=max(dp[i-1][j],dp[i][j-1]);
}
dp[i][j]=q;
}
}
// for(int i=0;i<=m;i++)
// {
// for(int j=0;j<=n;j++)
// {
// cout<<dp[i][j];
// }cout<<endl;
// }
int i=m;
int j=n;
int index=dp[m][n];
char lcs[index+1];
lcs[index]=’ ';
while(i>0 && j>0)
{
if(dp[i][j]==dp[i-1][j])
{
i=i-1;
}
else if(dp[i][j]==dp[i][j-1])
{
j=j-1;
}
else{
lcs[index-1]=s1[i-1];
i=i-1;
j=j-1;
index–;
}
}
cout<<lcs;
// return dp[m][n];
}
int main()
{
char s1[1000],s2[1000];
cin>>s1>>s2;
lcs(s1,s2);
}