#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll dp[32][2][2][2][2];
void precompute() {
for (int k = 0; k <= 30; k++)
for (int b1 = 0; b1 < 2; b1++)
for (int b2 = 0; b2 < 2; b2++)
for (int c1 = 0; c1 < 2; c1++)
for (int c2 = 0; c2 < 2; c2++)
if (k == 0) dp[k][b1][b2][c1][c2] = (b1 == 1 && c1 == 1) + (b2 == 1 && c2 == 1);
else {
int mid_b = b1 ^ b2, mid_c = c1 ^ c2;
ll L = dp[k - 1][b1][mid_b][c1][mid_c], R = dp[k - 1][mid_b][b2][mid_c][c2];
dp[k][b1][b2][c1][c2] = L + R;
if (mid_b == 1 && mid_c == 1) dp[k][b1][b2][c1][c2]--;
}
}
void solve() {
int n, k; cin >> n >> k;
string s, z; cin >> s >> z;
ll F[2][2] = {0};
for (int i = 0; i < n; i++) {
int b1 = s[i] - '0', b2 = z[i] - '0';
F[b1][b2]++;
}
ll sum = 0, sum2 = 0;
for (int b1 = 0; b1 < 2; b1++)
for (int b2 = 0; b2 < 2; b2++) {
if (F[b1][b2] == 0) continue;
sum += F[b1][b2] * dp[k][b1][b2][b1][b2];
for (int c1 = 0; c1 < 2; c1++)
for (int c2 = 0; c2 < 2; c2++) {
if (F[c1][c2] == 0) continue;
sum2 += F[b1][b2] * F[c1][c2] * dp[k][b1][b2][c1][c2];
}
}
ll ans = n * sum - sum2;
cout << ans << '\n';
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
precompute();
int tests = 1; cin >> tests;
while (tests--) solve();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnVzaW5nIGxsID0gbG9uZyBsb25nOwoKbGwgZHBbMzJdWzJdWzJdWzJdWzJdOwoKdm9pZCBwcmVjb21wdXRlKCkgewogICAgZm9yIChpbnQgayA9IDA7IGsgPD0gMzA7IGsrKykKICAgICAgICBmb3IgKGludCBiMSA9IDA7IGIxIDwgMjsgYjErKykKICAgICAgICAgICAgZm9yIChpbnQgYjIgPSAwOyBiMiA8IDI7IGIyKyspCiAgICAgICAgICAgICAgICBmb3IgKGludCBjMSA9IDA7IGMxIDwgMjsgYzErKykKICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjMiA9IDA7IGMyIDwgMjsgYzIrKykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPT0gMCkgZHBba11bYjFdW2IyXVtjMV1bYzJdID0gKGIxID09IDEgJiYgYzEgPT0gMSkgKyAoYjIgPT0gMSAmJiBjMiA9PSAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWlkX2IgPSBiMSBeIGIyLCBtaWRfYyA9IGMxIF4gYzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbCBMID0gZHBbayAtIDFdW2IxXVttaWRfYl1bYzFdW21pZF9jXSwgUiA9IGRwW2sgLSAxXVttaWRfYl1bYjJdW21pZF9jXVtjMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcFtrXVtiMV1bYjJdW2MxXVtjMl0gPSBMICsgUjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaWRfYiA9PSAxICYmIG1pZF9jID09IDEpIGRwW2tdW2IxXVtiMl1bYzFdW2MyXS0tOwogICAgICAgICAgICAgICAgICAgICAgICB9Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBpbnQgbiwgazsgY2luID4+IG4gPj4gazsKICAgIHN0cmluZyBzLCB6OyBjaW4gPj4gcyA+PiB6OwoKICAgIGxsIEZbMl1bMl0gPSB7MH07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGludCBiMSA9IHNbaV0gLSAnMCcsIGIyID0geltpXSAtICcwJzsKICAgICAgICBGW2IxXVtiMl0rKzsKICAgIH0KCiAgICBsbCBzdW0gPSAwLCBzdW0yID0gMDsKICAgIGZvciAoaW50IGIxID0gMDsgYjEgPCAyOyBiMSsrKQogICAgICAgIGZvciAoaW50IGIyID0gMDsgYjIgPCAyOyBiMisrKSB7CiAgICAgICAgICAgIGlmIChGW2IxXVtiMl0gPT0gMCkgY29udGludWU7CiAgICAgICAgICAgIHN1bSArPSBGW2IxXVtiMl0gKiBkcFtrXVtiMV1bYjJdW2IxXVtiMl07CiAgICAgICAgICAgIGZvciAoaW50IGMxID0gMDsgYzEgPCAyOyBjMSsrKQogICAgICAgICAgICAgICAgZm9yIChpbnQgYzIgPSAwOyBjMiA8IDI7IGMyKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoRltjMV1bYzJdID09IDApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIHN1bTIgKz0gRltiMV1bYjJdICogRltjMV1bYzJdICogZHBba11bYjFdW2IyXVtjMV1bYzJdOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgIGxsIGFucyA9IG4gKiBzdW0gLSBzdW0yOwogICAgY291dCA8PCBhbnMgPDwgJ1xuJzsKfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsKCiAgICBwcmVjb21wdXRlKCk7CgogICAgaW50IHRlc3RzID0gMTsgY2luID4+IHRlc3RzOwogICAgd2hpbGUgKHRlc3RzLS0pIHNvbHZlKCk7CiAgICAKICAgIHJldHVybiAwOwp9Cg==