#include <bits/stdc++.h>   using namespace std;   int dp[1003][1003][11][2];   string s, t;   int n, m;   int k;   int rec(int i, int j, int how_k, int op) {     if (how_k > k) return -1e9;     if (i >= n || j >= m) {       if (how_k == k && !op) return 0;       return -1e9;     }     if (s[i] != t[j] && op) return -1e9;     int &ret = dp[i][j][how_k][op];     if (ret != -1) return ret;     ret = -1e9;     if (s[i] == t[j]) {       if (op) {         ret = max(ret, rec(i + 1, j + 1, how_k + 1, 0) + 1);         ret = max(ret, rec(i + 1, j + 1, how_k, op) + 1);       } else {         ret = max(ret, rec(i + 1, j + 1, how_k + 1, op) + 1);         ret = max(ret, rec(i + 1, j + 1, how_k, 1) + 1);       }     }     ret = max(ret, rec(i + 1, j, how_k + (op == 1), 0));     ret = max(ret, rec(i, j + 1, how_k + (op == 1), 0));     return ret;   }   int main() {     cin >> n >> m >> k;     memset(dp, -1, sizeof dp);     cin >> s >> t;     cout << rec(0, 0, 0, 0);     return 0;   }   