#include using namespace std; typedef long long ll; typedef long double ld; typedef pair ii; typedef vector vi; typedef vector vvi; typedef vector vii; #define x first #define y second #define pb push_back #define eb emplace_back #define all(v) (v).begin(), (v).end() const ll m = 10; void maxCommonSubsequence(string a, string b) { ll k = a.size(); vvi T(k + 1, vi(k + 1, 0)); for(ll i = k - 1; i >= 0; i--) { for(ll j = k - 1; j >= 0; j--) { if(a[i] == b[j]) { T[i][j] = T[i + 1][j + 1] + 1; } else { T[i][j] = max(T[i + 1][j], T[i][j + 1]); } } } ll i = 0, j = 0; while(i < k || j < k) { if(i < k && T[i][j] == T[i + 1][j]) { i++; } else if(j < k && T[i][j] == T[i][j + 1]) { j++; } else { cout << a[i]; i++; j++; } } } void run() { ll n; cin >> n; string a, b; cin >> a >> b; for(ll i = 0; i < n; i += m) { maxCommonSubsequence(a.substr(i, min(m, n - i)), b.substr(i, min(m, n - i))); } cout << endl; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); run(); return 0; }