#include <bits/stdc++.h>
using namespace std;
#define TASK "BOARDGAME"
#define all(x) (x).begin(), (x).end()
typedef long long ll;
typedef pair<int, int> ii;
const int MAX_M = 2e5;
const int MAX_N = 2e5;
const int MAX_Q = 10;
const int MOD = (int)1e9 + 7;
template <class X, class Y>
bool maximize(X& x, const Y& y) {
if (x >= y) return false;
x = y;
return true;
};
template <class X, class Y>
bool minimize(X& x, const Y& y) {
if (x <= y) return false;
x = y;
return true;
};
int m, n, q;
string queries[MAX_Q + 5];
string a[MAX_M + 5];
namespace SUBTASK_1 {
const int M = MAX_M;
const int N = 5e6;
int z[N + 5];
bool checkSubtask() {
return 1LL * m * n < m + n;
};
void calcZFunction(const string& s) {
z[0] = 0;
int n = s.size();
for (int i = 1, l = 0, r = 0; i < n; i++) {
if (i < r) {
z[i] = min(z[i - l], r - i);
};
while (i + z[i] < n && s[z[i]] == s[i + z[i]]) z[i]++;
if (i + z[i] > r) {
l = i;
r = i + z[i];
};
};
};
void Solve() {
string board;
for (int i = 1; i <= m; i++)
for (int j = 1; j <= n; j++) board += a[i][j];
for (int i = 1; i <= q; i++) {
string period;
for (int k = 0; k < m * n; k++) {
period += queries[i][k % queries[i].size()];
};
string st = period + '#' + board;
calcZFunction(st);
int res = 0;
for (int j = m * n + 1; j < st.size(); j++) {
int k = z[j];
int len = (k / queries[i].size()) * queries[i].size();
maximize(res, len);
};
string boardRev = board;
reverse(all(boardRev));
string stRev = period + '#' + boardRev;
calcZFunction(stRev);
for (int j = m * n + 1; j < stRev.size(); j++) {
int k = z[j];
int len = (k / queries[i].size()) * queries[i].size();
maximize(res, len);
};
cout << res << ' ';
};
cout << '\n';
};
}; // namespace SUBTASK_1
void solve() {
cin >> m >> n >> q;
for (int i = 1; i <= m; i++) {
cin >> a[i];
a[i] = " " + a[i];
};
for (int i = 1; i <= q; i++) cin >> queries[i];
SUBTASK_1::Solve();
};
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
if (fopen(TASK ".INP", "r")) {
freopen(TASK ".INP", "r", stdin);
freopen(TASK ".OUT", "w", stdout);
};
int t;
cin >> t;
while (t--) solve();
};
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIFRBU0sgIkJPQVJER0FNRSIKI2RlZmluZSBhbGwoeCkgKHgpLmJlZ2luKCksICh4KS5lbmQoKQoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gaWk7Cgpjb25zdCBpbnQgTUFYX00gPSAyZTU7CmNvbnN0IGludCBNQVhfTiA9IDJlNTsKY29uc3QgaW50IE1BWF9RID0gMTA7CmNvbnN0IGludCBNT0QgPSAoaW50KTFlOSArIDc7Cgp0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWT4KYm9vbCBtYXhpbWl6ZShYJiB4LCBjb25zdCBZJiB5KSB7CiAgICBpZiAoeCA+PSB5KSByZXR1cm4gZmFsc2U7CiAgICB4ID0geTsKICAgIHJldHVybiB0cnVlOwp9Owp0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWT4KYm9vbCBtaW5pbWl6ZShYJiB4LCBjb25zdCBZJiB5KSB7CiAgICBpZiAoeCA8PSB5KSByZXR1cm4gZmFsc2U7CiAgICB4ID0geTsKICAgIHJldHVybiB0cnVlOwp9OwoKaW50IG0sIG4sIHE7CnN0cmluZyBxdWVyaWVzW01BWF9RICsgNV07CnN0cmluZyBhW01BWF9NICsgNV07CgpuYW1lc3BhY2UgU1VCVEFTS18xIHsKICAgIGNvbnN0IGludCBNID0gTUFYX007CiAgICBjb25zdCBpbnQgTiA9IDVlNjsKCiAgICBpbnQgeltOICsgNV07CgogICAgYm9vbCBjaGVja1N1YnRhc2soKSB7CiAgICAgICAgcmV0dXJuIDFMTCAqIG0gKiBuIDwgbSArIG47CiAgICB9OwoKICAgIHZvaWQgY2FsY1pGdW5jdGlvbihjb25zdCBzdHJpbmcmIHMpIHsKICAgICAgICB6WzBdID0gMDsKICAgICAgICBpbnQgbiA9IHMuc2l6ZSgpOwogICAgICAgIGZvciAoaW50IGkgPSAxLCBsID0gMCwgciA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgaWYgKGkgPCByKSB7CiAgICAgICAgICAgICAgICB6W2ldID0gbWluKHpbaSAtIGxdLCByIC0gaSk7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICB3aGlsZSAoaSArIHpbaV0gPCBuICYmIHNbeltpXV0gPT0gc1tpICsgeltpXV0pIHpbaV0rKzsKCiAgICAgICAgICAgIGlmIChpICsgeltpXSA+IHIpIHsKICAgICAgICAgICAgICAgIGwgPSBpOwogICAgICAgICAgICAgICAgciA9IGkgKyB6W2ldOwogICAgICAgICAgICB9OwogICAgICAgIH07CiAgICB9OwoKICAgIHZvaWQgU29sdmUoKSB7CiAgICAgICAgc3RyaW5nIGJvYXJkOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPD0gbjsgaisrKSBib2FyZCArPSBhW2ldW2pdOwoKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBxOyBpKyspIHsKICAgICAgICAgICAgc3RyaW5nIHBlcmlvZDsKICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBtICogbjsgaysrKSB7CiAgICAgICAgICAgICAgICBwZXJpb2QgKz0gcXVlcmllc1tpXVtrICUgcXVlcmllc1tpXS5zaXplKCldOwogICAgICAgICAgICB9OwoKICAgICAgICAgICAgc3RyaW5nIHN0ID0gcGVyaW9kICsgJyMnICsgYm9hcmQ7CiAgICAgICAgICAgIGNhbGNaRnVuY3Rpb24oc3QpOwoKICAgICAgICAgICAgaW50IHJlcyA9IDA7CiAgICAgICAgICAgIGZvciAoaW50IGogPSBtICogbiArIDE7IGogPCBzdC5zaXplKCk7IGorKykgewogICAgICAgICAgICAgICAgaW50IGsgPSB6W2pdOwogICAgICAgICAgICAgICAgaW50IGxlbiA9IChrIC8gcXVlcmllc1tpXS5zaXplKCkpICogcXVlcmllc1tpXS5zaXplKCk7CiAgICAgICAgICAgICAgICBtYXhpbWl6ZShyZXMsIGxlbik7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICBzdHJpbmcgYm9hcmRSZXYgPSBib2FyZDsKICAgICAgICAgICAgcmV2ZXJzZShhbGwoYm9hcmRSZXYpKTsKCiAgICAgICAgICAgIHN0cmluZyBzdFJldiA9IHBlcmlvZCArICcjJyArIGJvYXJkUmV2OwogICAgICAgICAgICBjYWxjWkZ1bmN0aW9uKHN0UmV2KTsKCiAgICAgICAgICAgIGZvciAoaW50IGogPSBtICogbiArIDE7IGogPCBzdFJldi5zaXplKCk7IGorKykgewogICAgICAgICAgICAgICAgaW50IGsgPSB6W2pdOwogICAgICAgICAgICAgICAgaW50IGxlbiA9IChrIC8gcXVlcmllc1tpXS5zaXplKCkpICogcXVlcmllc1tpXS5zaXplKCk7CiAgICAgICAgICAgICAgICBtYXhpbWl6ZShyZXMsIGxlbik7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICBjb3V0IDw8IHJlcyA8PCAnICc7CiAgICAgICAgfTsKCiAgICAgICAgY291dCA8PCAnXG4nOwogICAgfTsKfTsgIC8vIG5hbWVzcGFjZSBTVUJUQVNLXzEKCnZvaWQgc29sdmUoKSB7CiAgICBjaW4gPj4gbSA+PiBuID4+IHE7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyBpKyspIHsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICBhW2ldID0gIiAiICsgYVtpXTsKICAgIH07CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKSBjaW4gPj4gcXVlcmllc1tpXTsKCiAgICBTVUJUQVNLXzE6OlNvbHZlKCk7Cn07CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgaWYgKGZvcGVuKFRBU0sgIi5JTlAiLCAiciIpKSB7CiAgICAgICAgZnJlb3BlbihUQVNLICIuSU5QIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbihUQVNLICIuT1VUIiwgInciLCBzdGRvdXQpOwogICAgfTsKCiAgICBpbnQgdDsKICAgIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkgc29sdmUoKTsKfTs=