/***UVA 156反片语***/
#include<iostream>
#include<cctype>
#include<vector>
#include<map>
#include<algorithm>
#include<string>
using namespace std;
map <string,int> cnt;
vector <string> words;
string rep(const string & s){
string ans = s;
for(int i = 0;i<ans.length();i++){
ans[i] = tolower(ans[i]);
}
sort(ans.begin(),ans.end());
return ans;
}
int main(){
int n = 0;
string s;
while(cin>>s){
if(s[0] == '#') break;
words.push_back(s);
string r = rep(s);
if(!cnt.count(r)){
cnt[r] = 0;
}
cnt[r]++;//计算出相同的
}
vector <string> ans;
for(int i = 0;i<words.size();i++){//按单词string来算
if(cnt[rep(words[i])]==1) ans.push_back(words[i]);
}
sort(ans.begin(),ans.end());
for(int i = 0;i<ans.size();i++){
cout <<ans[i] <<"\n";
}
return 0;
}
#include<iostream>
#include<cctype>
#include<vector>
#include<map>
#include<algorithm>
#include<string>
using namespace std;
map <string,int> cnt;
vector <string> words;
string rep(const string & s){
string ans = s;
for(int i = 0;i<ans.length();i++){
ans[i] = tolower(ans[i]);
}
sort(ans.begin(),ans.end());
return ans;
}
int main(){
int n = 0;
string s;
while(cin>>s){
if(s[0] == '#') break;
words.push_back(s);
string r = rep(s);
if(!cnt.count(r)){
cnt[r] = 0;
}
cnt[r]++;//计算出相同的
}
vector <string> ans;
for(int i = 0;i<words.size();i++){//按单词string来算
if(cnt[rep(words[i])]==1) ans.push_back(words[i]);
}
sort(ans.begin(),ans.end());
for(int i = 0;i<ans.size();i++){
cout <<ans[i] <<"\n";
}
return 0;
}