https://codeforces.com/contest/1187/problem/B
int num[30];
vector<int> pos[30];
int main(){
IO;
int n,m;
string s,t;
cin>>n;
cin>>s;
for(int i=0;i<n;i++){
pos[s[i]-'a'].pb(i);
}
cin>>m;
while(m--){
int ans=0;
memset(num,0,sizeof num);
cin>>t;
int len=t.size();
for(int i=0;i<len;i++){
num[t[i]-'a']++;
}
//出现次数最多的字母在s中的位置
for(int i=0;i<26;i++){
if(num[i]!=0)
ans=max(pos[i][num[i]-1],ans);//num[i]=0越界 包含t全部字母
}
cout<<ans+1<<endl;
}
return 0;
}