func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long mod = 1000000007;   long long dp[11][2][1010][1010];   string s, t;   long long bt(int K, bool f, int a, int b) {     if (K == 0) return 0;     long long& ref = dp[K][f][a][b];     if (ref != -1) return ref;     ref = INT_MIN;     if (f) {       ref = bt(K - 1, 0, a, b);       if (a < s.size() && b < t.size() && s[a] == t[b])         ref = max(ref, 1 + bt(K, 1, a + 1, b + 1));     } else {       if (a < s.size()) ref = bt(K, 0, a + 1, b);       if (b < t.size()) ref = max(ref, bt(K, 0, a, b + 1));       if (a < s.size() && b < t.size() && s[a] == t[b])         ref = max(ref, 1 + bt(K, 1, a + 1, b + 1));     }     return ref;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(nullptr);     int N, M, K;     cin >> N >> M >> K;     cin >> s >> t;     memset(dp, -1, sizeof dp);     assert(bt(K, 0, 0, 0) >= K);     cout << bt(K, 0, 0, 0) <<   n ;     return 0;   }   