class WordFilter {
public:
unordered_map<string,int> m;
WordFilter(vector<string>& words) {
int n=words.size();
for(int i=0;i<n;i++){
string w=words[i];
int size=w.size();
string s,p;
for(int j=1;j<=size;j++){
s=w.substr(0,j);
for(int k=0;k<size;k++){
p=w.substr(k,size);
m[s + "|" + p]=i+1;
}
}
}
}
int f(string prefix, string suffix) {
string s=prefix + "|" + suffix;
return m[s]-1;
}};