#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll p;
string s;
const int base = 32;
const int N = 1e3 + 4;
ll POW[N];
ll hash_[N];
ll q;
vector<vector<pair<ll, ll>>> v;
ll get(int i, int j) {
return (hash_[j] - hash_[i - 1] * POW[j - i + 1] + p * p) % p;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> p >> q;
cin >> s;
int n = s.size();
POW[0] = 1;
for (int i = 1; i <= n; ++i) {
POW[i] = (POW[i - 1] * base) % p;
}
s = " " + s;
for (int i = 1; i <= n; ++i) {
hash_[i] = (hash_[i - 1] * base + s[i] - 'a' + 1) % p;
}
v.resize(n + 1);
for (int i = 1; i <= n; ++i) {
for (int j = i; j <= n; ++j) {
v[j - i + 1].push_back({get(i, j), i});
}
}
for (int i = 1; i <= n; ++i) {
sort(v[i].begin(), v[i].end());
}
while (q--) {
string t;
cin >> t;
int m = t.size();
ll hash_t = 0;
t = " " + t;
for (int i = 1; i <= m; ++i) {
hash_t = (hash_t * base + t[i] - 'a' + 1) % p;
}
pair<ll, ll> check = {hash_t, 0};
auto it = lower_bound(v[m].begin(), v[m].end(), check);
int idx = it - v[m].begin();
if (it == v[m].end() || v[m][idx].first != hash_t) {
cout << "-1" << '\n';
}
else {
cout << v[m][idx].second - 1 << '\n';
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCmxsIHA7CnN0cmluZyBzOwpjb25zdCBpbnQgYmFzZSA9IDMyOwpjb25zdCBpbnQgTiA9IDFlMyArIDQ7CmxsIFBPV1tOXTsKbGwgaGFzaF9bTl07CmxsIHE7CnZlY3Rvcjx2ZWN0b3I8cGFpcjxsbCwgbGw+Pj4gdjsKCmxsIGdldChpbnQgaSwgaW50IGopIHsKICAgIHJldHVybiAoaGFzaF9bal0gLSBoYXNoX1tpIC0gMV0gKiBQT1dbaiAtIGkgKyAxXSArIHAgKiBwKSAlIHA7Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApOwoKICAgIGNpbiA+PiBwID4+IHE7CiAgICBjaW4gPj4gczsKICAgIGludCBuID0gcy5zaXplKCk7CiAgICBQT1dbMF0gPSAxOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICAgICAgUE9XW2ldID0gKFBPV1tpIC0gMV0gKiBiYXNlKSAlIHA7CiAgICB9CiAgICBzID0gIiAiICsgczsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgewogICAgICAgIGhhc2hfW2ldID0gKGhhc2hfW2kgLSAxXSAqIGJhc2UgKyBzW2ldIC0gJ2EnICsgMSkgJSBwOwogICAgfQogICAgdi5yZXNpemUobiArIDEpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IGk7IGogPD0gbjsgKytqKSB7CiAgICAgICAgICAgIHZbaiAtIGkgKyAxXS5wdXNoX2JhY2soe2dldChpLCBqKSwgaX0pOwogICAgICAgIH0KICAgIH0KICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgewogICAgICAgIHNvcnQodltpXS5iZWdpbigpLCB2W2ldLmVuZCgpKTsKICAgIH0KICAgIHdoaWxlIChxLS0pIHsKICAgICAgICBzdHJpbmcgdDsKICAgICAgICBjaW4gPj4gdDsKICAgICAgICBpbnQgbSA9IHQuc2l6ZSgpOwogICAgICAgIGxsIGhhc2hfdCA9IDA7CiAgICAgICAgdCA9ICIgIiArIHQ7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbTsgKytpKSB7CiAgICAgICAgICAgIGhhc2hfdCA9IChoYXNoX3QgKiBiYXNlICsgdFtpXSAtICdhJyArIDEpICUgcDsgCiAgICAgICAgfQogICAgICAgIHBhaXI8bGwsIGxsPiBjaGVjayA9IHtoYXNoX3QsIDB9OwogICAgICAgIGF1dG8gaXQgPSBsb3dlcl9ib3VuZCh2W21dLmJlZ2luKCksIHZbbV0uZW5kKCksIGNoZWNrKTsKICAgICAgICBpbnQgaWR4ID0gaXQgLSB2W21dLmJlZ2luKCk7CiAgICAgICAgaWYgKGl0ID09IHZbbV0uZW5kKCkgfHwgdlttXVtpZHhdLmZpcnN0ICE9IGhhc2hfdCkgewogICAgICAgICAgICBjb3V0IDw8ICItMSIgPDwgJ1xuJzsKICAgICAgICB9IAogICAgICAgIGVsc2UgewogICAgICAgICAgICBjb3V0IDw8IHZbbV1baWR4XS5zZWNvbmQgLSAxIDw8ICdcbic7CiAgICAgICAgfQogICAgfSAgIAogICAgcmV0dXJuIDA7Cn0=