AC Code:
#include<bits/stdc++.h>
#define S1 129
#define S2 131
#define LL long long
#define maxn 100005
using namespace std;
int n;
char s[1000005];
map<pair<LL,LL>,vector<int> >v;
pair<LL,LL>u[maxn];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%s",s);
int len = strlen(s);
LL s1 = 0 , s2 = 0;
for(int j=len-1;j>=0;j--){
s1 = s1 * S1 + s[j];
s2 = s2 * S2 + s[j];
v[make_pair(s1,s2)].push_back(i);
}
u[i] = make_pair(s1,s2);
}
for(int i=1;i<=n;i++){
int x;
scanf("%d",&x);
if(v[u[i]].size()<x) puts("-1");
else printf("%d\n",v[u[i]][x-1]);
}
}