#include <bits/stdc++.h>
using namespace std;
#define int long long
#define cint const int
#define ii pair<int, int>
#define fi first
#define se second
#define vi vector<int>
#define vii vector<vi>
#define pb push_back
#define pq priority_queue
#define mid(l, r) ((l + r) >> 1)
#define left(id) (id << 1)
#define right(id) (id << 1 | 1)
#define cntbit(mask) __builtin_popcountll(mask)
#define BIT(mask, i) (mask & (1ll << (i)))
#define ONBIT(mask, i) (mask | (1ll << (i)))
const int MAXN = 1e5 + 15;
const int oo = 1e18;
const int MOD = 1e9 + 7;
int n, m, q;
vector<string> P;
vector<int> order;
vector<string> S;
void PROCESS() {
freopen("ojfactory.inp", "r", stdin);
freopen("ojfactory.out", "w", stdout);
cin >> n >> m >> q;
P.resize(n + 1);
for (int i = 1; i <= n; i++) {
cin >> P[i];
}
order.resize(m);
for (int i = 0; i < m; i++) {
cin >> order[i];
}
S.resize(q);
for (int i = 0; i < q; i++) {
cin >> S[i];
}
string T;
for (int idx : order) {
T += P[idx];
}
int T_len = T.size();
for (int k = 0; k < q; k++) {
string& cur_S = S[k];
int s_len = cur_S.size();
vector<vi> dp(s_len + 1, vi(T_len + 1, 0));
for (int i = 1; i <= s_len; i++) {
for (int j = 1; j <= T_len; j++) {
if (cur_S[i - 1] == T[j - 1]) {
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
cout << dp[s_len][T_len] << "\n";
}
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
PROCESS();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGNpbnQgY29uc3QgaW50CiNkZWZpbmUgaWkgcGFpcjxpbnQsIGludD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHZpIHZlY3RvcjxpbnQ+CiNkZWZpbmUgdmlpIHZlY3Rvcjx2aT4KI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBwcSBwcmlvcml0eV9xdWV1ZQojZGVmaW5lIG1pZChsLCByKSAoKGwgKyByKSA+PiAxKQojZGVmaW5lIGxlZnQoaWQpIChpZCA8PCAxKQojZGVmaW5lIHJpZ2h0KGlkKSAoaWQgPDwgMSB8IDEpCiNkZWZpbmUgY250Yml0KG1hc2spIF9fYnVpbHRpbl9wb3Bjb3VudGxsKG1hc2spCiNkZWZpbmUgQklUKG1hc2ssIGkpIChtYXNrICYgKDFsbCA8PCAoaSkpKQojZGVmaW5lIE9OQklUKG1hc2ssIGkpIChtYXNrIHwgKDFsbCA8PCAoaSkpKQoKY29uc3QgaW50IE1BWE4gPSAxZTUgKyAxNTsKY29uc3QgaW50IG9vICAgPSAxZTE4Owpjb25zdCBpbnQgTU9EICA9IDFlOSArIDc7CgppbnQgbiwgbSwgcTsKdmVjdG9yPHN0cmluZz4gUDsKdmVjdG9yPGludD4gb3JkZXI7CnZlY3RvcjxzdHJpbmc+IFM7Cgp2b2lkIFBST0NFU1MoKSB7CiAgICBmcmVvcGVuKCJvamZhY3RvcnkuaW5wIiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJvamZhY3Rvcnkub3V0IiwgInciLCBzdGRvdXQpOwogICAgY2luID4+IG4gPj4gbSA+PiBxOwoKICAgIFAucmVzaXplKG4gKyAxKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNpbiA+PiBQW2ldOwogICAgfQoKICAgIG9yZGVyLnJlc2l6ZShtKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKSB7CiAgICAgICAgY2luID4+IG9yZGVyW2ldOwogICAgfQoKICAgIFMucmVzaXplKHEpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBxOyBpKyspIHsKICAgICAgICBjaW4gPj4gU1tpXTsKICAgIH0KCiAgICBzdHJpbmcgVDsKICAgIGZvciAoaW50IGlkeCA6IG9yZGVyKSB7CiAgICAgICAgVCArPSBQW2lkeF07CiAgICB9CgogICAgaW50IFRfbGVuID0gVC5zaXplKCk7CgogICAgZm9yIChpbnQgayA9IDA7IGsgPCBxOyBrKyspIHsKICAgICAgICBzdHJpbmcmIGN1cl9TID0gU1trXTsKICAgICAgICBpbnQgc19sZW4gPSBjdXJfUy5zaXplKCk7CgogICAgICAgIHZlY3Rvcjx2aT4gZHAoc19sZW4gKyAxLCB2aShUX2xlbiArIDEsIDApKTsKCiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gc19sZW47IGkrKykgewogICAgICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBUX2xlbjsgaisrKSB7CiAgICAgICAgICAgICAgICBpZiAoY3VyX1NbaSAtIDFdID09IFRbaiAtIDFdKSB7CiAgICAgICAgICAgICAgICAgICAgZHBbaV1bal0gPSBkcFtpIC0gMV1baiAtIDFdICsgMTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZHBbaV1bal0gPSBtYXgoZHBbaSAtIDFdW2pdLCBkcFtpXVtqIC0gMV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBjb3V0IDw8IGRwW3NfbGVuXVtUX2xlbl0gPDwgIlxuIjsKICAgIH0KfQoKc2lnbmVkIG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwoKICAgIFBST0NFU1MoKTsKICAgIHJldHVybiAwOwp9Cg==