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