#include<bits/stdc++.h>
using namespace std;
const int MO = 1000000007;
int f[2][203][203][2];
int n ,m,K;
char s1[2001],s2[2001];
int main(){
cin >> n >> m >> K;
cin >> (s1+1) >> (s2+1);
int i = 1;
f[0][0][0][0] = f[1][0][0][0] = 1;
for(int i_ = 1;i_ <= n;i_ ++){
i ^= 1;
for(int j = 1;j <= m;j ++){
for(int k = 1;k <= K;k ++){
if(s1[i_]==s2[j])
f[i][j][k][0] = (f[i^1][j][k][0] + f[i^1][j][k][1])%MO,
f[i][j][k][1] = ((f[i^1][j-1][k][1] + f[i^1][j-1][k-1][1] )%MO + f[i^1][j-1][k-1][0])%MO;
else
f[i][j][k][1] = 0,
f[i][j][k][0] = (f[i^1][j][k][0] + f[i^1][j][k][1])%MO;
}
}
}
cout << (f[i][m][K][1] + f[i][m][K][0])%MO;
return 0;
}
在“((f[i^1][j-1][k][1] + f[i^1][j-1][k-1][1] )%MO + f[i^1][j-1][k-1][0])%MO”中,取模操作必须进行两次,改为"f[i][j][k][1] = (f[i^1][j-1][k][1] + f[i^1][j-1][k-1][1] + f[i^1][j-1][k-1][0] )%MO;"只能有60pts