#include<bits/stdc++.h>
using namespace std;
string LCS(const string &a, const string &b) {
int n = a.size();
int m = b.size();
vector<vector<int>> dp(n + 1, vector<int>(m + 1, 0));
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; 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]);
}
}
}
string s;
int i = n, j = m;
while (i > 0 && j > 0) {
if (a[i - 1] == b[j - 1]) {
s = a[i - 1] + s;
i--;
j--;
} else if (dp[i - 1][j] > dp[i][j - 1]) {
i--;
} else {
j--;
}
}
return s;
}
int main() {
string s1, s2;
cin >> s1;
cin >> s2;
cout << LCS(s1, s2);
return 0;
}
ICNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJpbmcgTENTKGNvbnN0IHN0cmluZyAmYSwgY29uc3Qgc3RyaW5nICZiKSB7CiAgICBpbnQgbiA9IGEuc2l6ZSgpOwogICAgaW50IG0gPSBiLnNpemUoKTsKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gZHAobiArIDEsIHZlY3RvcjxpbnQ+KG0gKyAxLCAwKSk7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBtOyBqKyspIHsKICAgICAgICAgICAgaWYgKGFbaSAtIDFdID09IGJbaiAtIDFdKSB7CiAgICAgICAgICAgICAgICBkcFtpXVtqXSA9IGRwW2kgLSAxXVtqIC0gMV0gKyAxOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZHBbaV1bal0gPSBtYXgoZHBbaSAtIDFdW2pdLCBkcFtpXVtqIC0gMV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgc3RyaW5nIHM7CiAgICBpbnQgaSA9IG4sIGogPSBtOwogICAgd2hpbGUgKGkgPiAwICYmIGogPiAwKSB7CiAgICAgICAgaWYgKGFbaSAtIDFdID09IGJbaiAtIDFdKSB7CiAgICAgICAgICAgIHMgPSBhW2kgLSAxXSArIHM7CiAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgai0tOwogICAgICAgIH0gZWxzZSBpZiAoZHBbaSAtIDFdW2pdID4gZHBbaV1baiAtIDFdKSB7CiAgICAgICAgICAgIGktLTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBqLS07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHM7Cn0KCgoKaW50IG1haW4oKSB7CiAgICBzdHJpbmcgczEsIHMyOwogICAgY2luID4+IHMxOwogICAgY2luID4+IHMyOwogICAgY291dCA8PCBMQ1MoczEsIHMyKTsKICAgIHJldHVybiAwOwp9Cg==