思路是 把 h 前面的 k 都去掉, 然后把所有的 u 变成 oo ,之后的 string 放入 set 自动去重后 大小就是 answer
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100;
int n;
char s[maxn];
bool vis[maxn];
set<string> st;
void work() {
int len = strlen(s);
memset(vis, 0, sizeof vis);
for(int i = 0; i < len; ++i) {
if(s[i] == 'h') {
int j = i-1;
while(j >= 0 && s[j] == 'k') { vis[j] = true; j--; }
}
}
string t;
for(int i = 0; i < len; ++i) {
if(!vis[i]) {
if(s[i] == 'u') { t.push_back('o');t.push_back('o'); }
else t.push_back(s[i]);
}
}
st.insert(t);
}
int main() {
//cout << " 233 " << endl;
scanf("%d", &n);
for(int i = 0; i < n; ++i) {
scanf("%s", s);
work();
}
int ans = st.size();
cout << ans << endl;
return 0;
}