- 並べかえられた文字列はソートして比較すると良い
- 短い文字列をソートしようとしてREをもらってしまった・・・
int main() {
int n;
cin >> n;
for (int caseIndex = 1; caseIndex <= n; ++caseIndex) {
map<string, int> dic;
int m;
cin >> m;
for (int i = 0; i < m; ++i) {
string s;
cin >> s;
if (s.size() >= 4) {
sort(s.begin() + 1, s.end() - 1);
}
++dic[s];
}
cin >> m;
cin.ignore();
printf("Scenario #%d:\n", caseIndex);
for (int i = 0; i < m; ++i) {
int answer = 1;
string line;
getline(cin, line);
istringstream iss(line);
string word;
while (iss >> word) {
if (word.size() >= 4) {
sort(word.begin() + 1, word.end() - 1);
}
answer *= dic[word];
}
printf("%d\n", answer);
}
printf("\n");
}
}