#include #include #include using namespace std; int main(){ string a, b; cin >> a >> b; int a_size = a.size(), b_size = b.size(); vector>> dp(a.size() + 1, vector>(b_size + 1, {0, ""})); for(int i = 1; i <= a_size; i++){ for(int j = 1; j <= b_size; j++){ if(a[i - 1] == b[j - 1]) { dp[i][j].first = dp[i - 1][j - 1].first + 1; string tmp = dp[i - 1][j - 1].second; tmp.push_back(a[i - 1]); dp[i][j].second = tmp; } else{ dp[i][j].first = max(dp[i - 1][j].first, dp[i][j - 1].first); if(dp[i - 1][j].first > dp[i][j - 1].first){ dp[i][j].second = dp[i - 1][j].second; } else dp[i][j].second = dp[i][j - 1].second; } } } //cout << dp[a_size][b_size].first << " " << dp[a_size][b_size].second << endl; cout << dp[a_size][b_size].second << endl; return 0; }