#include <bits/stdc++.h>
using namespace std;
int tab[300000][26];
int actuel[26];
bool estBon(int indice) {
  for (int i = 0; i < 26; i++) {
    if (tab[indice][i] < actuel[i]) return false;
  }
  return true;
}
int dichotomie(int gauche, int droite) {
  if (gauche == droite) {
    return gauche;
  }
  if (gauche + 1 == droite) {
    if (estBon(gauche)) return gauche;
    return droite;
  }
  int milieu = (gauche + droite) / 2;
  if (estBon(milieu)) {
    return dichotomie(gauche, milieu);
  } else {
    return dichotomie(milieu, droite);
  }
}
int main() {
  int N;
  cin >> N;
  string s;
  cin >> s;
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < 26; j++) {
      tab[i + 1][j] = tab[i][j];
    }
    tab[i + 1][s[i] - 'a']++;
  }
  int M;
  cin >> M;
  for (int i = 0; i < M; i++) {
    string t;
    cin >> t;
    for (int j = 0; j < 26; j++) actuel[j] = 0;
    for (int j = 0; j < t.size(); j++) {
      actuel[t[j] - 'a']++;
    }
    cout << dichotomie(1, N) << endl;
  }
}
