#include <bits/stdc++.h>
#define FOR(i, a, b) for(int i = (a); i <= (b); i++)
using namespace std;
string a, b;
int n, m;
void Solve(){
vector<vector<int> > F(n+1, vector<int>(m+1, 0));
string res = "";
FOR(i, 1, n)
FOR(j, 1, m)
if (a[i] == b[j]) F[i][j] = F[i-1][j-1] + 1;
else F[i][j] = max(F[i-1][j], F[i][j-1]);
while(F[n][m] > 0){
if (a[n] == b[m]){
res = a[n] + res;
n--;
m--;
} else if (F[n][m] == F[n-1][m]) n--;
else if (F[n][m] == F[n][m-1]) m--;
}
cout<<res;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> a;
cin >> b;
n = (int)a.size();
m = (int)b.size();
a = "*" + a;
b = "*" + b;
Solve();
return 0;
}
CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojZGVmaW5lIEZPUihpLCBhLCBiKSBmb3IoaW50IGkgPSAoYSk7IGkgPD0gKGIpOyBpKyspCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJpbmcgYSwgYjsKaW50IG4sIG07Cgp2b2lkIFNvbHZlKCl7CiAgIHZlY3Rvcjx2ZWN0b3I8aW50PiA+IEYobisxLCB2ZWN0b3I8aW50PihtKzEsIDApKTsKICAgc3RyaW5nIHJlcyA9ICIiOwogICBGT1IoaSwgMSwgbikKICAgIEZPUihqLCAxLCBtKQogICAgICBpZiAoYVtpXSA9PSBiW2pdKSBGW2ldW2pdID0gRltpLTFdW2otMV0gKyAxOwogICAgICAgZWxzZSBGW2ldW2pdID0gbWF4KEZbaS0xXVtqXSwgRltpXVtqLTFdKTsKCiAgIHdoaWxlKEZbbl1bbV0gPiAwKXsKICAgICAgaWYgKGFbbl0gPT0gYlttXSl7CiAgICAgICAgcmVzID0gYVtuXSArIHJlczsKICAgICAgICBuLS07CiAgICAgICAgbS0tOwogICAgICB9IGVsc2UgaWYgKEZbbl1bbV0gPT0gRltuLTFdW21dKSBuLS07CiAgICAgICAgIGVsc2UgaWYgKEZbbl1bbV0gPT0gRltuXVttLTFdKSBtLS07CiAgIH0KICAgY291dDw8cmVzOwp9CgpzaWduZWQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsgICAgY291dC50aWUoTlVMTCk7CgogICAgY2luID4+IGE7CiAgICBjaW4gPj4gYjsKICAgIG4gPSAoaW50KWEuc2l6ZSgpOwogICAgbSA9IChpbnQpYi5zaXplKCk7CiAgICBhID0gIioiICsgYTsKICAgIGIgPSAiKiIgKyBiOwogICAgU29sdmUoKTsKICAgIHJldHVybiAwOwp9Cgo=