#include<bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define siz(x) (int)(x.size())
#define all(x) x.begin(), x.end()
#define debug_arr(x,len) for(int _=1; _<=len; _++) cout<<x[_]<<" "; cout<<'\n';
#define debug(x) cout<<'\n'<<#x<<": "<<x<<'\n';
const int maxN = 1e6+5;
int n, m, k, a[maxN], dp[maxN];
string s;
vector<int>pos[30];
void solve()
{
}
int32_t main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
cin>>n>>k;
cin>>s;
for(int i=0; i<=n; i+=1) dp[i] = 1e18;
dp[n] = 1;
for(int i=n-1; i>=0; i-=1)
{
pos[s[i]-'a'].push_back(i);
bool check = 0;
for(int j=0; j<k; j+=1)
{
if(!pos[j].empty())
{
dp[i] = min(dp[i], dp[pos[j].back()+1] + 1);
}
else check = 1;
}
if(check) dp[i] = 1;
}
// for(int i=0; i<n; i+=1) cout<<dp[i]<<" "; cout<<'\n';
for(int i=0; i<26; i+=1) sort(all(pos[i]));
cin>>m;
while(m--)
{
string s1; cin>>s1;
int cur = 0, ans = -1;
for(int i=0; i<siz(s1); i+=1)
{
auto tmp = lower_bound(all(pos[s1[i]-'a']), cur);
if(*tmp >= cur && *tmp <n)
{
cur = *tmp+1;
}
else ans = 0;
}
if(ans == -1) ans = dp[cur];
cout<<ans<<'\n';
}
}
// dp[i] la min so operation de tu vi tri i co the pha duoc subsequence
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBzaXooeCkgKGludCkoeC5zaXplKCkpCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIGRlYnVnX2Fycih4LGxlbikgZm9yKGludCBfPTE7IF88PWxlbjsgXysrKSBjb3V0PDx4W19dPDwiICI7IGNvdXQ8PCdcbic7CiNkZWZpbmUgZGVidWcoeCkgY291dDw8J1xuJzw8I3g8PCI6ICI8PHg8PCdcbic7CmNvbnN0IGludCBtYXhOID0gMWU2KzU7CgppbnQgbiwgbSwgaywgYVttYXhOXSwgZHBbbWF4Tl07CnN0cmluZyBzOwp2ZWN0b3I8aW50PnBvc1szMF07Cgp2b2lkIHNvbHZlKCkKewogICAgCn0KCmludDMyX3QgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7CiAgICBjaW4+Pm4+Pms7CiAgICBjaW4+PnM7CiAgICBmb3IoaW50IGk9MDsgaTw9bjsgaSs9MSkgZHBbaV0gPSAxZTE4OwogICAgZHBbbl0gPSAxOwogICAgZm9yKGludCBpPW4tMTsgaT49MDsgaS09MSkKICAgIHsKICAgICAgICBwb3Nbc1tpXS0nYSddLnB1c2hfYmFjayhpKTsKICAgICAgICBib29sIGNoZWNrID0gMDsKICAgICAgICBmb3IoaW50IGo9MDsgajxrOyBqKz0xKQogICAgICAgIHsKICAgICAgICAgICAgaWYoIXBvc1tqXS5lbXB0eSgpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkcFtpXSA9IG1pbihkcFtpXSwgZHBbcG9zW2pdLmJhY2soKSsxXSArIDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgY2hlY2sgPSAxOwogICAgICAgIH0KICAgICAgICBpZihjaGVjaykgZHBbaV0gPSAxOwogICAgfQogICAgLy8gZm9yKGludCBpPTA7IGk8bjsgaSs9MSkgY291dDw8ZHBbaV08PCIgIjsgY291dDw8J1xuJzsKICAgIGZvcihpbnQgaT0wOyBpPDI2OyBpKz0xKSBzb3J0KGFsbChwb3NbaV0pKTsKICAgIGNpbj4+bTsKICAgIHdoaWxlKG0tLSkKICAgIHsKICAgICAgICBzdHJpbmcgczE7IGNpbj4+czE7CiAgICAgICAgaW50IGN1ciA9IDAsIGFucyA9IC0xOwogICAgICAgIGZvcihpbnQgaT0wOyBpPHNpeihzMSk7IGkrPTEpCiAgICAgICAgewogICAgICAgICAgICBhdXRvIHRtcCA9IGxvd2VyX2JvdW5kKGFsbChwb3NbczFbaV0tJ2EnXSksIGN1cik7CiAgICAgICAgICAgIGlmKCp0bXAgPj0gY3VyICYmICp0bXAgPG4pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGN1ciA9ICp0bXArMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGFucyA9IDA7CiAgICAgICAgfQogICAgICAgIGlmKGFucyA9PSAtMSkgYW5zID0gZHBbY3VyXTsKICAgICAgICBjb3V0PDxhbnM8PCdcbic7CiAgICB9Cn0KCi8vIGRwW2ldIGxhIG1pbiBzbyBvcGVyYXRpb24gZGUgdHUgdmkgdHJpIGkgY28gdGhlIHBoYSBkdW9jIHN1YnNlcXVlbmNl