//#include <bits/stdc++.h>
 
#include <iostream>
#include <vector>
#include <array>
 
using namespace std;
 
#define FOR(i,a,b)      for (int i = (a), _b = (b); i <= (_b); ++i)
#define FORD(i,a,b)     for (int i = (a), _b = (b); i >= (_b); --i)
 
//--Compare------------------------------------------------------------------------------------
template<class X, class Y>
    inline bool maximize(X &x, const Y &y){ return (x < y) ? x = y, 1 : 0; }
 
template<class X, class Y>
    inline bool minimize(X &x, const Y &y){ return (x > y) ? x = y, 1 : 0; }
 
//--Process------------------------------------------------------------------------------------
 
typedef pair <int, int>   pii;
#define fi              first
#define se              second
 
constexpr int MAXN = 2e5 + 10;
constexpr pii INF = {1e9, 1e9};
 
int n, m, q;
string P[MAXN >> 1];
int idx[MAXN];
 
vector <array<int, 26>> nxt[MAXN >> 1];
int sz[MAXN], nxtAll[26][MAXN];
pii dp[2][3005];
 
void init(void)
{
    static array <int, 26> INF_AR;
    FOR(c, 0, 25) INF_AR[c] = (int) (1e9);
 
    // nxt[i][j][c] la vi tri k nho nhat > j sao cho P[i][k] = c (1 <= i <= n)
    // (x, y)
    FORD(i, n, 0)
    {
        sz[i] = P[i].size();
        P[i] = '#' + P[i] + '#';
 
        nxt[i].assign(sz[i] + 2, INF_AR);
 
        FOR(c, 0, 25)
        {
            FORD(j, sz[i], 0)
            {
                if (P[i][j + 1] - 'a' == c) nxt[i][j][c] = j + 1;
                else nxt[i][j][c] = nxt[i][j + 1][c];
            }
        }
    }
 
    FOR(c, 0, 25) nxtAll[c][m] = m + 2;
    FORD(i, m - 1, 0)
    {
        FOR(c, 0, 25)
        {
            if (nxt[idx[i + 1]][0][c] <= sz[idx[i + 1]])
                nxtAll[c][i] = i + 1;
            else
                nxtAll[c][i] = nxtAll[c][i + 1];
        }
    }
}
 
void solve(void)
{
    while (q--)
    {
        string S; cin >> S;
        int szS = S.size();
        S = '#' + S + '#';
 
        dp[0][0] = {0, 0};
        dp[0][1] = dp[0][2] = INF;
 
        int res = 0;
 
        FOR(i, 1, szS)
        {
            FOR(len, 0, i + 1) dp[i & 1][len] = INF;
            FOR(len, 0, i)
            {
                minimize(dp[i & 1][len], dp[(i - 1) & 1][len]);
                int x = dp[(i - 1) & 1][len].fi, k = dp[(i - 1) & 1][len].se;
                if (x < 0 || x > m) continue;
 
                if (x != 0 && nxt[idx[x]][k][S[i] - 'a'] <= sz[idx[x]])
                    minimize(dp[i & 1][len + 1], pii{x, nxt[idx[x]][k][S[i] - 'a']});
 
                if (x == 0 || nxt[idx[x]][k][S[i] - 'a'] > sz[idx[x]])
                {
                    x = nxtAll[S[i] - 'a'][x];
                    if (x <= m)
                        minimize(dp[i & 1][len + 1], pii{x, nxt[idx[x]][0][S[i] - 'a']});
                }
 
                if (i == szS && dp[i & 1][len].fi <= m) res = len;
                if (i == szS && dp[i & 1][len + 1].fi <= m) res = len + 1;
            }
        }
 
        cout << res << '\n';
    }
    cout << '\n';
}
 
 
signed main(void)
{
    cin.tie(nullptr)->sync_with_stdio(false);
 
    #define task "ojfactory"
    if (fopen(task".INP", "r"))
    {
       freopen(task".INP", "r", stdin);
       freopen(task".OUT", "w", stdout);
    }
    //--OpenFile-------------------------------------------------------------------------------
 
    cin >> n >> m >> q;
    FOR(i, 1, n) cin >> P[i];
    FOR(i, 1, m) cin >> idx[i];
    P[0] = "";
 
    init();
    solve();
 
    return 0;
}
 
				Ly8jaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFycmF5PgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgRk9SKGksYSxiKSAgICAgIGZvciAoaW50IGkgPSAoYSksIF9iID0gKGIpOyBpIDw9IChfYik7ICsraSkKI2RlZmluZSBGT1JEKGksYSxiKSAgICAgZm9yIChpbnQgaSA9IChhKSwgX2IgPSAoYik7IGkgPj0gKF9iKTsgLS1pKQoKLy8tLUNvbXBhcmUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4KICAgIGlubGluZSBib29sIG1heGltaXplKFggJngsIGNvbnN0IFkgJnkpeyByZXR1cm4gKHggPCB5KSA/IHggPSB5LCAxIDogMDsgfQoKdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4KICAgIGlubGluZSBib29sIG1pbmltaXplKFggJngsIGNvbnN0IFkgJnkpeyByZXR1cm4gKHggPiB5KSA/IHggPSB5LCAxIDogMDsgfQoKLy8tLVByb2Nlc3MtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnR5cGVkZWYgcGFpciA8aW50LCBpbnQ+ICAgcGlpOwojZGVmaW5lIGZpICAgICAgICAgICAgICBmaXJzdAojZGVmaW5lIHNlICAgICAgICAgICAgICBzZWNvbmQKCmNvbnN0ZXhwciBpbnQgTUFYTiA9IDJlNSArIDEwOwpjb25zdGV4cHIgcGlpIElORiA9IHsxZTksIDFlOX07CgppbnQgbiwgbSwgcTsKc3RyaW5nIFBbTUFYTiA+PiAxXTsKaW50IGlkeFtNQVhOXTsKCnZlY3RvciA8YXJyYXk8aW50LCAyNj4+IG54dFtNQVhOID4+IDFdOwppbnQgc3pbTUFYTl0sIG54dEFsbFsyNl1bTUFYTl07CnBpaSBkcFsyXVszMDA1XTsKCnZvaWQgaW5pdCh2b2lkKQp7CiAgICBzdGF0aWMgYXJyYXkgPGludCwgMjY+IElORl9BUjsKICAgIEZPUihjLCAwLCAyNSkgSU5GX0FSW2NdID0gKGludCkgKDFlOSk7CgogICAgLy8gbnh0W2ldW2pdW2NdIGxhIHZpIHRyaSBrIG5obyBuaGF0ID4gaiBzYW8gY2hvIFBbaV1ba10gPSBjICgxIDw9IGkgPD0gbikKICAgIC8vICh4LCB5KQogICAgRk9SRChpLCBuLCAwKQogICAgewogICAgICAgIHN6W2ldID0gUFtpXS5zaXplKCk7CiAgICAgICAgUFtpXSA9ICcjJyArIFBbaV0gKyAnIyc7CgogICAgICAgIG54dFtpXS5hc3NpZ24oc3pbaV0gKyAyLCBJTkZfQVIpOwoKICAgICAgICBGT1IoYywgMCwgMjUpCiAgICAgICAgewogICAgICAgICAgICBGT1JEKGosIHN6W2ldLCAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoUFtpXVtqICsgMV0gLSAnYScgPT0gYykgbnh0W2ldW2pdW2NdID0gaiArIDE7CiAgICAgICAgICAgICAgICBlbHNlIG54dFtpXVtqXVtjXSA9IG54dFtpXVtqICsgMV1bY107CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgRk9SKGMsIDAsIDI1KSBueHRBbGxbY11bbV0gPSBtICsgMjsKICAgIEZPUkQoaSwgbSAtIDEsIDApCiAgICB7CiAgICAgICAgRk9SKGMsIDAsIDI1KQogICAgICAgIHsKICAgICAgICAgICAgaWYgKG54dFtpZHhbaSArIDFdXVswXVtjXSA8PSBzeltpZHhbaSArIDFdXSkKICAgICAgICAgICAgICAgIG54dEFsbFtjXVtpXSA9IGkgKyAxOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBueHRBbGxbY11baV0gPSBueHRBbGxbY11baSArIDFdOwogICAgICAgIH0KICAgIH0KfQoKdm9pZCBzb2x2ZSh2b2lkKQp7CiAgICB3aGlsZSAocS0tKQogICAgewogICAgICAgIHN0cmluZyBTOyBjaW4gPj4gUzsKICAgICAgICBpbnQgc3pTID0gUy5zaXplKCk7CiAgICAgICAgUyA9ICcjJyArIFMgKyAnIyc7CgogICAgICAgIGRwWzBdWzBdID0gezAsIDB9OwogICAgICAgIGRwWzBdWzFdID0gZHBbMF1bMl0gPSBJTkY7CgogICAgICAgIGludCByZXMgPSAwOwoKICAgICAgICBGT1IoaSwgMSwgc3pTKQogICAgICAgIHsKICAgICAgICAgICAgRk9SKGxlbiwgMCwgaSArIDEpIGRwW2kgJiAxXVtsZW5dID0gSU5GOwogICAgICAgICAgICBGT1IobGVuLCAwLCBpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBtaW5pbWl6ZShkcFtpICYgMV1bbGVuXSwgZHBbKGkgLSAxKSAmIDFdW2xlbl0pOwogICAgICAgICAgICAgICAgaW50IHggPSBkcFsoaSAtIDEpICYgMV1bbGVuXS5maSwgayA9IGRwWyhpIC0gMSkgJiAxXVtsZW5dLnNlOwogICAgICAgICAgICAgICAgaWYgKHggPCAwIHx8IHggPiBtKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICBpZiAoeCAhPSAwICYmIG54dFtpZHhbeF1dW2tdW1NbaV0gLSAnYSddIDw9IHN6W2lkeFt4XV0pCiAgICAgICAgICAgICAgICAgICAgbWluaW1pemUoZHBbaSAmIDFdW2xlbiArIDFdLCBwaWl7eCwgbnh0W2lkeFt4XV1ba11bU1tpXSAtICdhJ119KTsKCiAgICAgICAgICAgICAgICBpZiAoeCA9PSAwIHx8IG54dFtpZHhbeF1dW2tdW1NbaV0gLSAnYSddID4gc3pbaWR4W3hdXSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB4ID0gbnh0QWxsW1NbaV0gLSAnYSddW3hdOwogICAgICAgICAgICAgICAgICAgIGlmICh4IDw9IG0pCiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltaXplKGRwW2kgJiAxXVtsZW4gKyAxXSwgcGlpe3gsIG54dFtpZHhbeF1dWzBdW1NbaV0gLSAnYSddfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGkgPT0gc3pTICYmIGRwW2kgJiAxXVtsZW5dLmZpIDw9IG0pIHJlcyA9IGxlbjsKICAgICAgICAgICAgICAgIGlmIChpID09IHN6UyAmJiBkcFtpICYgMV1bbGVuICsgMV0uZmkgPD0gbSkgcmVzID0gbGVuICsgMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgY291dCA8PCByZXMgPDwgJ1xuJzsKICAgIH0KICAgIGNvdXQgPDwgJ1xuJzsKfQoKCnNpZ25lZCBtYWluKHZvaWQpCnsKICAgIGNpbi50aWUobnVsbHB0ciktPnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgogICAgI2RlZmluZSB0YXNrICJvamZhY3RvcnkiCiAgICBpZiAoZm9wZW4odGFzayIuSU5QIiwgInIiKSkKICAgIHsKICAgICAgIGZyZW9wZW4odGFzayIuSU5QIiwgInIiLCBzdGRpbik7CiAgICAgICBmcmVvcGVuKHRhc2siLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIC8vLS1PcGVuRmlsZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBjaW4gPj4gbiA+PiBtID4+IHE7CiAgICBGT1IoaSwgMSwgbikgY2luID4+IFBbaV07CiAgICBGT1IoaSwgMSwgbSkgY2luID4+IGlkeFtpXTsKICAgIFBbMF0gPSAiIjsKCiAgICBpbml0KCk7CiAgICBzb2x2ZSgpOwoKICAgIHJldHVybiAwOwp9Cg==