#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const int N = 3e3 + 5;
int n, m;
string s, t;
int dp[N][N]; // dp[i][j] là độ dài xâu con chung dài nhất khi xét các kí tự từ 1..i của xâu s
// và các kí tự từ 1..j của xâu t
// đáp án: dp[n][m] với n là độ dài xâu S, m là độ dài xâu T
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> s;
cin >> t;
n = s.size();
m = t.size();
s = ' ' + s;
t = ' ' + t;
// get về
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (s[i] == t[j]) {
dp[i][j] = dp[i - 1][j - 1] + 1; // xâu con chung của đoạn 1..(i-1), 1..(j-1) của s và t
// bổ sung thêm kí tự chung s[i]
}
else { // s[i] != t[j]
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]); // xem xét là bỏ đi kí tự thứ i của s,
// hoặc bỏ đi kí tự thứ j của t
}
}
}
// cout << dp[n][m] << '\n';
// update lên
// for (int i = 0; i <= n; i++) {
// for (int j = 0; j <= m; j++) dp[i][j] = -INF;
// }
// dp[0][0] = 0;
// for (int i = 0; i <= n; i++) {
// for (int j = 0; j <= m; j++) {
// if (i + 1 <= n && j + 1 <= m && s[i + 1] == t[j + 1]) {
// dp[i + 1][j + 1] = max(dp[i + 1][j + 1], dp[i][j] + 1);
// }
// else {
// if (i + 1 <= n) dp[i + 1][j] = max(dp[i + 1][j], dp[i][j]);
// if (j + 1 <= m) dp[i][j + 1] = max(dp[i][j + 1], dp[i][j]);
// }
// }
// }
// cout << dp[n][m] << '\n';
// trace
int i = n, j = m;
string ans = "";
while (true) {
if (i == 0 || j == 0) break;
if (s[i] == t[j]) {
ans += s[i];
i = i - 1, j = j - 1;
}
else {
if (dp[i - 1][j] > dp[i][j - 1]) {
i = i - 1;
}
else {
j = j - 1;
}
}
}
reverse(ans.begin(), ans.end());
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAgCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsgIAp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOyAgCgpjb25zdCBpbnQgSU5GID0gMWU5OyAgCmNvbnN0IGludCBOID0gM2UzICsgNTsgIAoKaW50IG4sIG07IApzdHJpbmcgcywgdDsgCmludCBkcFtOXVtOXTsgLy8gZHBbaV1bal0gbMOgIMSR4buZIGTDoGkgeMOidSBjb24gY2h1bmcgZMOgaSBuaOG6pXQga2hpIHjDqXQgY8OhYyBrw60gdOG7sSB04burIDEuLmkgY+G7p2EgeMOidSBzIAoJCQkgIC8vIHbDoCBjw6FjIGvDrSB04buxIHThu6sgMS4uaiBj4bunYSB4w6J1IHQgIAoKLy8gxJHDoXAgw6FuOiBkcFtuXVttXSB24bubaSBuIGzDoCDEkeG7mSBkw6BpIHjDonUgUywgbSBsw6AgxJHhu5kgZMOgaSB4w6J1IFQgCgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyAgCQoJY2luID4+IHM7IAoJY2luID4+IHQ7IAoKCW4gPSBzLnNpemUoKTsgICAgCgltID0gdC5zaXplKCk7IAoJCglzID0gJyAnICsgczsgICAKCXQgPSAnICcgKyB0OyAgCiAJCiAJLy8gZ2V0IHbhu4EKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWZvciAoaW50IGogPSAxOyBqIDw9IG07IGorKykgewoJCQlpZiAoc1tpXSA9PSB0W2pdKSB7CgkJCQlkcFtpXVtqXSA9IGRwW2kgLSAxXVtqIC0gMV0gKyAxOyAvLyB4w6J1IGNvbiBjaHVuZyBj4bunYSDEkW/huqFuIDEuLihpLTEpLCAxLi4oai0xKSBj4bunYSBzIHbDoCB0IAoJCQkJCQkJCQkJCQkgLy8gYuG7lSBzdW5nIHRow6ptIGvDrSB04buxIGNodW5nIHNbaV0KCQkJfQoJCQllbHNlIHsgLy8gc1tpXSAhPSB0W2pdIAoJCQkJZHBbaV1bal0gPSBtYXgoZHBbaSAtIDFdW2pdLCBkcFtpXVtqIC0gMV0pOyAvLyB4ZW0geMOpdCBsw6AgYuG7jyDEkWkga8OtIHThu7EgdGjhu6kgaSBj4bunYSBzLCAKCQkJCQkJCQkJCQkJCQkJLy8gaG/hurdjIGLhu48gxJFpIGvDrSB04buxIHRo4bupIGogY+G7p2EgdAoJCQl9CgkJfQoJfSAKCgkvLyBjb3V0IDw8IGRwW25dW21dIDw8ICdcbic7ICAKCgkvLyB1cGRhdGUgbMOqbiAKCS8vIGZvciAoaW50IGkgPSAwOyBpIDw9IG47IGkrKykgewoJLy8gCWZvciAoaW50IGogPSAwOyBqIDw9IG07IGorKykgZHBbaV1bal0gPSAtSU5GOyAgCgkvLyB9CgkvLyBkcFswXVswXSA9IDA7ICAKCgkvLyBmb3IgKGludCBpID0gMDsgaSA8PSBuOyBpKyspIHsKCS8vIAlmb3IgKGludCBqID0gMDsgaiA8PSBtOyBqKyspIHsKCS8vIAkJaWYgKGkgKyAxIDw9IG4gJiYgaiArIDEgPD0gbSAmJiBzW2kgKyAxXSA9PSB0W2ogKyAxXSkgewoJLy8gCQkJZHBbaSArIDFdW2ogKyAxXSA9IG1heChkcFtpICsgMV1baiArIDFdLCBkcFtpXVtqXSArIDEpOyAgCgkvLyAJCX0KCS8vIAkJZWxzZSB7CgkvLyAJCQlpZiAoaSArIDEgPD0gbikgZHBbaSArIDFdW2pdID0gbWF4KGRwW2kgKyAxXVtqXSwgZHBbaV1bal0pOyAgIAoJLy8gCQkJaWYgKGogKyAxIDw9IG0pIGRwW2ldW2ogKyAxXSA9IG1heChkcFtpXVtqICsgMV0sIGRwW2ldW2pdKTsgCgkvLyAJCX0KCS8vIAl9CgkvLyB9CgoJLy8gY291dCA8PCBkcFtuXVttXSA8PCAnXG4nOyAKCgkvLyB0cmFjZSAKCWludCBpID0gbiwgaiA9IG07ICAgCglzdHJpbmcgYW5zID0gIiI7ICAKCXdoaWxlICh0cnVlKSB7CgkJaWYgKGkgPT0gMCB8fCBqID09IDApIGJyZWFrOwoKCQlpZiAoc1tpXSA9PSB0W2pdKSB7CgkJCWFucyArPSBzW2ldOyAgIAoJCQlpID0gaSAtIDEsIGogPSBqIC0gMTsgCgkJfSAKCQllbHNlIHsKCQkJaWYgKGRwW2kgLSAxXVtqXSA+IGRwW2ldW2ogLSAxXSkgewoJCQkJaSA9IGkgLSAxOyAKCQkJfQoJCQllbHNlIHsKCQkJCWogPSBqIC0gMTsgCgkJCX0KCQl9Cgl9CgkKCXJldmVyc2UoYW5zLmJlZ2luKCksIGFucy5lbmQoKSk7ICAgIAoKCWNvdXQgPDwgYW5zIDw8ICdcbic7IAp9