#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9 + 23;
const int MOD = 1e9 + 9;
const int N = 1e3 + 10;
const int K = 10 + 10;
string s, t;
int a[N][N][K][2];
inline void uax(int &a, int b) { a = max(a, b); }
int lcs(int n, int m, int k) {
  for (int i = (0); i < (n + 1); ++i)
    for (int j = (0); j < (m + 1); ++j)
      for (int cnt = (0); cnt < (k + 1); ++cnt)
        for (int e = (0); e < (2); ++e) {
          int cur = a[i][j][cnt][e];
          uax(a[i + 1][j][cnt][0], cur);
          uax(a[i][j + 1][cnt][0], cur);
          if (i < n && j < m && s[i] == t[j]) {
            if (e && cur) uax(a[i + 1][j + 1][cnt][1], cur + 1);
            uax(a[i + 1][j + 1][cnt + 1][1], cur + 1);
          }
        }
  return max(a[n][m][k][0], a[n][m][k][1]);
}
int main() {
  ios_base::sync_with_stdio(0);
  int n, m, k;
  cin >> n >> m >> k;
  cin >> s;
  cin >> t;
  cout << lcs(n, m, k) << "\n";
}
