#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;
}
