#include <bits/stdc++.h>
int a[30][2 * 100000 + 5], cnt[30];
char s[2 * 100000 + 5], t[2 * 100000 + 5];
long long max(long long a, long long b) {
  if (a > b)
    return a;
  else
    return b;
}
int main() {
  long long i, j, n, len, m, maxn;
  scanf("%lld", &n);
  scanf("%s", s);
  for (i = 0; i < n; i++) {
    cnt[s[i] - 'a']++;
    a[s[i] - 'a'][cnt[s[i] - 'a']] = i;
  }
  scanf("%lld", &m);
  while (m--) {
    memset(cnt, 0, sizeof(cnt));
    scanf("%s", t);
    len = strlen(t);
    maxn = 0;
    for (i = 0; i < len; i++) {
      maxn = max(maxn, a[t[i] - 'a'][cnt[t[i] - 'a'] + 1] + 1);
      cnt[t[i] - 'a']++;
    }
    printf("%lld\n", maxn);
  }
  return 0;
}
