RT
#include <bits/stdc++.h>
using namespace std;
#define FILE(x) freopen(x".in", "r", stdin);freopen(x".out", "w", stdout);
const int mod = 1e9 + 7;
int n, m, k, a[101], b[101], cnt;
long long fact[101], dp[101][101];
void init(){
fact[0] = 1;
for (int i = 1; i <= 100; i++){
fact[i] = fact[i - 1] * i % mod;
}
return;
}
long long qpow(long long a, long long b){
long long res = 1;
while (b){
if (b & 1){
res *= a;
res %= mod;
}
a *= a;
a %= mod;
b = b >> 1;
}
return res;
}
long long C(long long n, long long m){
return fact[n] * qpow(fact[m], mod - 2) % mod * qpow(fact[n - m], mod - 2) % mod;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
init();
char c;
cin >> n >> m >> k;
for (int i = 1; i <= n; i++){
cin >> c;
a[i] = c - 48;
}
for (int i = 1; i <= n; i++){
cin >> c;
b[i] = c - 48;
if (a[i] == b[i]){
cnt++;
}
}
dp[0][cnt] = 1;
for (int i = 1; i <= m; i++){
for (int j = 0; j <= n; j++){
for (int l = 0; l <= k; l++){
int tmp = j - (l << 1) + k;
if (tmp < 0 || tmp > n){
continue;
}
dp[i][j] += dp[i - 1][tmp] * C(n - tmp, l) % mod * C(tmp, k - l) % mod;
dp[i][j] %= mod;
}
}
}
cout << dp[m][n];
return 0;
}