#include<bits/stdc++.h>
using namespace std;
#define int long long
int f[3005][3005];
signed main(){
string s,t;
cin >> s >> t;
int n = s.size(), m = t.size();
s = " " + s;
t = " " + t;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
f[i][j] = max(f[i-1][j], f[i][j-1]);
if(s[i] == t[j]) f[i][j] = max(f[i][j], f[i-1][j-1] + 1);
}
}
int i = n, j = m;
string ans;
while(i > 0 && j > 0){
if(s[i] == t[j]){
ans += s[i];
i--, j--;
}
else if(f[i-1][j] >= f[i][j-1]) i--;
else j--;
}
reverse(ans.begin(), ans.end());
cout << ans << "\n";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCmludCBmWzMwMDVdWzMwMDVdOwpzaWduZWQgbWFpbigpewogICAgc3RyaW5nIHMsdDsKICAgIGNpbiA+PiBzID4+IHQ7CiAgICBpbnQgbiA9IHMuc2l6ZSgpLCBtID0gdC5zaXplKCk7CiAgICBzID0gIiAiICsgczsKICAgIHQgPSAiICIgKyB0OwogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICAgIGZvcihpbnQgaiA9IDE7IGogPD0gbTsgaisrKXsKICAgICAgICAgICAgZltpXVtqXSA9IG1heChmW2ktMV1bal0sIGZbaV1bai0xXSk7CiAgICAgICAgICAgIGlmKHNbaV0gPT0gdFtqXSkgZltpXVtqXSA9IG1heChmW2ldW2pdLCBmW2ktMV1bai0xXSArIDEpOwogICAgICAgIH0KICAgIH0KICAgIGludCBpID0gbiwgaiA9IG07CiAgICBzdHJpbmcgYW5zOwogICAgd2hpbGUoaSA+IDAgJiYgaiA+IDApewogICAgICAgIGlmKHNbaV0gPT0gdFtqXSl7CiAgICAgICAgICAgIGFucyArPSBzW2ldOwogICAgICAgICAgICBpLS0sIGotLTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihmW2ktMV1bal0gPj0gZltpXVtqLTFdKSBpLS07CiAgICAgICAgZWxzZSBqLS07CiAgICB9CgogICAgcmV2ZXJzZShhbnMuYmVnaW4oKSwgYW5zLmVuZCgpKTsKICAgIGNvdXQgPDwgYW5zIDw8ICJcbiI7CiAgICByZXR1cm4gMDsKfQ==