#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
long long gcd(long long x, long long y) {
while (y != 0) {
long long tmp = x;
x = y;
y = tmp % x;
}
return x;
}
long long lcm(long long x, long long y) {
return x / gcd(x, y) * y;
}
struct Matrix {
vector<int> a;
int h, w;
Matrix(int h_, int w_) : a(h_ * w_), h(h_), w(w_) {};
int &operator()(int i, int j) {
return a[i * w + j];
}
};
int main() {
int T;
scanf("%d", &T);
while (T--) {
long long h1, w1, h2, w2;
string s, t;
cin >> h1 >> w1 >> s >> h2 >> w2 >> t;
long long h = lcm(h1, h2);
long long w = lcm(w1, w2);
Matrix sum(h2 + 1, w2 + 1);
for (int i = 0; i < h2; i++)
for (int j = 0; j < w2; j++)
sum(i + 1, j + 1) = sum(i + 1, j) + sum(i, j + 1) - sum(i, j) + (t[i * w2 + j] == '1');
long long sy = h / h2;
long long sx = w / w2;
long long ans = 0;
auto calc = [&](long long y, long long x) {
long long yy = y / sy * sy;
long long xx = x / sx * sx;
long long Y = yy / sy;
long long X = xx / sx;
long long res = 0;
if (y > yy && x > xx)
res += (t[Y * w2 + X] == '1') * (y - yy) * (x - xx);
if (x > xx) {
res += (sum(Y, X + 1) - sum(Y, X)) * (x - xx) * sy;
}
if (y > yy)
res += (sum(Y + 1, X) - sum(Y, X)) * (y - yy) * sx;
res += sum(Y, X) * sy * sx;
return res;
};
for (long long i = 0; i < h1; i++) {
for (long long j = 0; j < w1; j++) {
long long i0 = i * (h / h1);
long long j0 = j * (w / w1);
long long i1 = (i + 1) * (h / h1);
long long j1 = (j + 1) * (w / w1);
long long v = calc(i0, j0) - calc(i1, j0) - calc(i0, j1) + calc(i1, j1);
if (s[i * w1 + j] == '0')
v = (i1 - i0) * (j1 - j0) - v;
ans += v;
}
}
cout << ans << endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmxvbmcgbG9uZyBnY2QobG9uZyBsb25nIHgsIGxvbmcgbG9uZyB5KSB7CiAgd2hpbGUgKHkgIT0gMCkgewogICAgbG9uZyBsb25nIHRtcCA9IHg7CiAgICB4ID0geTsKICAgIHkgPSB0bXAgJSB4OwogIH0KICByZXR1cm4geDsKfQoKbG9uZyBsb25nIGxjbShsb25nIGxvbmcgeCwgbG9uZyBsb25nIHkpIHsKICByZXR1cm4geCAvIGdjZCh4LCB5KSAqIHk7Cn0KCnN0cnVjdCBNYXRyaXggewogIHZlY3RvcjxpbnQ+IGE7CiAgaW50IGgsIHc7CiAgCiAgTWF0cml4KGludCBoXywgaW50IHdfKSA6IGEoaF8gKiB3XyksIGgoaF8pLCB3KHdfKSB7fTsKCiAgaW50ICZvcGVyYXRvcigpKGludCBpLCBpbnQgaikgewogICAgcmV0dXJuIGFbaSAqIHcgKyBqXTsKICB9Cn07CgppbnQgbWFpbigpIHsKICBpbnQgVDsKICBzY2FuZigiJWQiLCAmVCk7CiAgd2hpbGUgKFQtLSkgewogICAgbG9uZyBsb25nIGgxLCB3MSwgaDIsIHcyOwogICAgc3RyaW5nIHMsIHQ7CiAgICBjaW4gPj4gaDEgPj4gdzEgPj4gcyA+PiBoMiA+PiB3MiA+PiB0OwogICAgbG9uZyBsb25nIGggPSBsY20oaDEsIGgyKTsKICAgIGxvbmcgbG9uZyB3ID0gbGNtKHcxLCB3Mik7CiAgICBNYXRyaXggc3VtKGgyICsgMSwgdzIgKyAxKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaDI7IGkrKykgCiAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdzI7IGorKykgCiAgICAgICAgc3VtKGkgKyAxLCBqICsgMSkgPSBzdW0oaSArIDEsIGopICsgc3VtKGksIGogKyAxKSAtIHN1bShpLCBqKSArICh0W2kgKiB3MiArIGpdID09ICcxJyk7CiAgICBsb25nIGxvbmcgc3kgPSBoIC8gaDI7CiAgICBsb25nIGxvbmcgc3ggPSB3IC8gdzI7CiAgICBsb25nIGxvbmcgYW5zID0gMDsKICAgIGF1dG8gY2FsYyA9IFsmXShsb25nIGxvbmcgeSwgbG9uZyBsb25nIHgpIHsKICAgICAgbG9uZyBsb25nIHl5ID0geSAvIHN5ICogc3k7CiAgICAgIGxvbmcgbG9uZyB4eCA9IHggLyBzeCAqIHN4OwogICAgICBsb25nIGxvbmcgWSA9IHl5IC8gc3k7CiAgICAgIGxvbmcgbG9uZyBYID0geHggLyBzeDsKICAgICAgbG9uZyBsb25nIHJlcyA9IDA7CiAgICAgIGlmICh5ID4geXkgJiYgeCA+IHh4KQogICAgICAgIHJlcyArPSAodFtZICogdzIgKyBYXSA9PSAnMScpICogKHkgLSB5eSkgKiAoeCAtIHh4KTsKICAgICAgaWYgKHggPiB4eCkgewogICAgICAgIHJlcyArPSAoc3VtKFksIFggKyAxKSAtIHN1bShZLCBYKSkgKiAoeCAtIHh4KSAqIHN5OwogICAgICB9CiAgICAgIGlmICh5ID4geXkpCiAgICAgICAgcmVzICs9IChzdW0oWSArIDEsIFgpIC0gc3VtKFksIFgpKSAqICh5IC0geXkpICogc3g7CiAgICAgIHJlcyArPSBzdW0oWSwgWCkgKiBzeSAqIHN4OwogICAgICByZXR1cm4gcmVzOwogICAgfTsKICAgIGZvciAobG9uZyBsb25nIGkgPSAwOyBpIDwgaDE7IGkrKykgewogICAgICBmb3IgKGxvbmcgbG9uZyBqID0gMDsgaiA8IHcxOyBqKyspIHsKICAgICAgICBsb25nIGxvbmcgaTAgPSBpICogKGggLyBoMSk7CiAgICAgICAgbG9uZyBsb25nIGowID0gaiAqICh3IC8gdzEpOwogICAgICAgIGxvbmcgbG9uZyBpMSA9IChpICsgMSkgKiAoaCAvIGgxKTsKICAgICAgICBsb25nIGxvbmcgajEgPSAoaiArIDEpICogKHcgLyB3MSk7CiAgICAgICAgbG9uZyBsb25nIHYgPSBjYWxjKGkwLCBqMCkgLSBjYWxjKGkxLCBqMCkgLSBjYWxjKGkwLCBqMSkgKyBjYWxjKGkxLCBqMSk7CiAgICAgICAgaWYgKHNbaSAqIHcxICsgal0gPT0gJzAnKSAKICAgICAgICAgIHYgPSAoaTEgLSBpMCkgKiAoajEgLSBqMCkgLSB2OwogICAgICAgIGFucyArPSB2OwogICAgICB9CiAgICB9CiAgICBjb3V0IDw8IGFucyA8PCBlbmRsOwogIH0KfQo=