#include<bits/stdc++.h>
using namespace std;
int dp[3005][3005]={0};
char a[3005];
char b[3005];
char c[3005];
void lcs()
{
	int len1=strlen(a);
	int len2=strlen(b);
	for(int i=1;i<=len1;i++)
	{
		for(int j=1;j<=len2;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]);
		}
	}
}

void look()
{
	int i=strlen(a);
	int j=strlen(b);
	
	int k=dp[i][j];
	memset(c,0,sizeof c);
	while(i!=0&&j!=0)
	{
		if(a[i-1]==b[j-1])
		{
			c[--k]=a[--i];
			j--;
		}
		else if(dp[i-1][j]>dp[i][j-1])
		{
			i--;
		}
		else
		{
			j--;
		}
	}
}
int main()
{
	while(~scanf("%s",a))
	{
		scanf("%s",b);
		lcs();
		look();
		int lenn=strlen(c);
		if(c!=0) 
		printf("%s\n",c);
	}
	return 0;
}