#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] = Độ 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
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> s;
cin >> t;
n = s.size();
m = t.size();
s = ' ' + s;
t = ' ' + t;
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 dài nhất của đoạn 1..(i-1) của s và 1..(j-1) của 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';
// Truy vết
int i = n, j = m;
string ans = "";
while (i > 0 && j > 0) {
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+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOyAgCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsgIAp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOyAgCgpjb25zdCBpbnQgSU5GID0gMWU5OyAgCmNvbnN0IGludCBOID0gM2UzICsgNTsgIAoKaW50IG4sIG07IApzdHJpbmcgcywgdDsgCmludCBkcFtOXVtOXTsgLy8gZHBbaV1bal0gPSDEkOG7mSBkw6BpIHjDonUgY29uIGNodW5nIGTDoGkgbmjhuqV0IGtoaSB4w6l0IGPDoWMga8OtIHThu7EgdOG7qyAxLi5pIGPhu6dhIHjDonUgcyAKCQkJICAvLyAgICAgICAgICAgIHbDoCBjw6FjIGvDrSB04buxIHThu6sgMS4uaiBj4bunYSB4w6J1IHQgIAoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgIAkKCWNpbiA+PiBzOyAKCWNpbiA+PiB0OyAKCgluID0gcy5zaXplKCk7ICAgIAoJbSA9IHQuc2l6ZSgpOyAKCQoJcyA9ICcgJyArIHM7ICAgCgl0ID0gJyAnICsgdDsgIAogCQogCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWZvciAoaW50IGogPSAxOyBqIDw9IG07IGorKykgewoJCQlpZiAoc1tpXSA9PSB0W2pdKSB7CgkJCQlkcFtpXVtqXSA9IGRwW2kgLSAxXVtqIC0gMV0gKyAxOyAvLyB4w6J1IGNvbiBjaHVuZyBkw6BpIG5o4bqldCBj4bunYSDEkW/huqFuIDEuLihpLTEpIGPhu6dhIHMgdsOgIDEuLihqLTEpIGPhu6dhIHQgCgkJCQkJCQkJCQkJCSAvLyBi4buVIHN1bmcgdGjDqm0ga8OtIHThu7EgY2h1bmcgc1tpXQoJCQl9CgkJCWVsc2UgeyAvLyBzW2ldICE9IHRbal0gCgkJCQlkcFtpXVtqXSA9IG1heChkcFtpIC0gMV1bal0sIGRwW2ldW2ogLSAxXSk7IC8vIHhlbSB4w6l0IGzDoCBi4buPIMSRaSBrw60gdOG7sSB0aOG7qSBpIGPhu6dhIHMsIAoJCQkJCQkJCQkJCQkJCQkvLyBob+G6t2MgYuG7jyDEkWkga8OtIHThu7EgdGjhu6kgaiBj4bunYSB0CgkJCX0KCQl9Cgl9IAoKCS8vIGNvdXQgPDwgZHBbbl1bbV0gPDwgJ1xuJzsgCgoJLy8gVHJ1eSB24bq/dAoJaW50IGkgPSBuLCBqID0gbTsgICAKCXN0cmluZyBhbnMgPSAiIjsgIAoJd2hpbGUgKGkgPiAwICYmIGogPiAwKSB7CgkJaWYgKHNbaV0gPT0gdFtqXSkgewoJCQlhbnMgKz0gc1tpXTsgICAKCQkJaSA9IGkgLSAxLCBqID0gaiAtIDE7IAoJCX0gCgkJZWxzZSB7CgkJCWlmIChkcFtpIC0gMV1bal0gPiBkcFtpXVtqIC0gMV0pIHsKCQkJCWkgPSBpIC0gMTsgCgkJCX0KCQkJZWxzZSB7CgkJCQlqID0gaiAtIDE7IAoJCQl9CgkJfQoJfQoJCglyZXZlcnNlKGFucy5iZWdpbigpLCBhbnMuZW5kKCkpOyAgICAKCgljb3V0IDw8IGFucyA8PCAnXG4nOyAKfQ==