#include <bits/stdc++.h>
using namespace std;
int n, m, k;
int dp[1010][1010][15][2];
char a[1010];
char b[1010];
int main() {
  while (cin >> n >> m >> k) {
    scanf("%s%s", a, b);
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        for (int t = 0; t <= k; t++) {
          dp[i][j][t][0] = dp[i][j][t][1] = 0;
          if (t == 0) continue;
          if (i) dp[i][j][t][0] = max(dp[i - 1][j][t][0], dp[i][j][t][0]);
          if (j) dp[i][j][t][0] = max(dp[i][j - 1][t][0], dp[i][j][t][0]);
          if (a[i] == b[j]) {
            if (i && j) {
              dp[i][j][t][1] = dp[i - 1][j - 1][t][1] + 1;
              dp[i][j][t][1] =
                  max(dp[i - 1][j - 1][t - 1][0] + 1, dp[i][j][t][1]);
            } else {
              dp[i][j][t][1] = 1;
            }
          }
          dp[i][j][t][0] = max(dp[i][j][t][0], dp[i][j][t][1]);
        }
      }
    }
    cout << dp[n - 1][m - 1][k][0] << endl;
  }
  return 0;
}
