#include <bits/stdc++.h>
#define endl '\n'
#define ll long long
using namespace std;
const int N = 2e2;

int m, n, k, z, position, cnt;
string x, y, a[N + 7];
set <string> v;
map <string, int> mp;
void recur(int pos, string sub)
{
    if(sub.size() > n) return;
    if(pos == x.size())
    {
        if(sub.size() < n) return;
        if(sub.size() == n)
        {
            int j = 0;
            for(int i = 0; i < y.size() && j < sub.size(); ++i)
                if(y[i] == sub[j]) ++j;
            if(j < sub.size())
                v.insert(sub);
        }
        return;
    }

    recur(pos + 1, sub);
    recur(pos + 1, sub + x[pos]);
}

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> m >> n >> k;
    cin >> x >> y;
    for(int i = 1; i <= m; i++) cin >> a[i];
    recur(0, "");

    for(string tmp : v)
        mp[tmp] = ++cnt;

    for(int i = 1; i <= m; ++i)
    {
        if(!mp.count(a[i])) cout << -1 << endl;
        else cout << mp[a[i]] % k << endl;
    }
}
