#include<bits/stdc++.h>
using namespace std;
string a,b,c,ans[101][101][101];
int f[101][101][101];
signed main()
{
cin>>a>>b>>c;
for(int i=1;i<=a.size();i++)
{
for(int j=1;j<=b.size();j++)
{
for(int z=1;z<=c.size();z++)
{
if(a[i-1]==b[j-1]&&b[j-1]==c[z-1])
{
if(f[i-1][j-1][z-1]+1>f[i][j][z])
{
ans[i][j][z]=ans[i-1][j-1][z-1]+a[i-1];
f[i][j][z]=f[i-1][j-1][z-1]+1;
}
}
else
{
f[i][j][z]=max(f[i-1][j-1][z-1],f[i][j][z]);
int p=max(max(f[i-1][j][z],f[i][j-1][z]),f[i][j][z-1]);
if(p==f[i-1][j][z])
{
ans[i][j][z]=ans[i-1][j][z];
}
else if(p==f[i][j-1][z])
{
ans[i][j][z]=ans[i][j-1][z];
}else if(p==f[i][j][z-1])
{
ans[i][j][z]=ans[i][j][z-1];
}
}
}
}
}
cout<<ans[a.size()][b.size()][c.size()];
return 0;
}