#include <iostream>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <algorithm>
using namespace std;
vector<set<string>> bar(vector<string> strs){
map<string,set<string>> m;
for(auto x: strs){
auto sorted = x;
sort(sorted.begin(), sorted.end());
set<string>& currentset = m[sorted];
currentset.insert(x);
};
vector<set<string>> result;
for(auto itr = m.begin(); itr != m.end(); itr++){
result.push_back(itr->second);
}
return result;
}
int main()
{
vector<string> strs = {string("123"), string("321"), string("555")};
auto res = bar(strs);
for(auto s: res){
for(auto str: s){
cout << str << " ";
}
cout << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPHNldDxzdHJpbmc+PiBiYXIodmVjdG9yPHN0cmluZz4gc3Rycyl7CiAgICBtYXA8c3RyaW5nLHNldDxzdHJpbmc+PiBtOwogICAgZm9yKGF1dG8geDogc3Rycyl7CiAgICAgICAgYXV0byBzb3J0ZWQgPSB4OwogICAgICAgIHNvcnQoc29ydGVkLmJlZ2luKCksIHNvcnRlZC5lbmQoKSk7CiAgICAgICAgc2V0PHN0cmluZz4mIGN1cnJlbnRzZXQgPSBtW3NvcnRlZF07CiAgICAgICAgY3VycmVudHNldC5pbnNlcnQoeCk7CiAgICB9OwogICAgCiAgICB2ZWN0b3I8c2V0PHN0cmluZz4+IHJlc3VsdDsKICAgIGZvcihhdXRvIGl0ciA9IG0uYmVnaW4oKTsgaXRyICE9IG0uZW5kKCk7IGl0cisrKXsKICAgICAgICByZXN1bHQucHVzaF9iYWNrKGl0ci0+c2Vjb25kKTsKICAgIH0KICAgIAogICAgcmV0dXJuIHJlc3VsdDsKfQoKaW50IG1haW4oKQp7CiAgICB2ZWN0b3I8c3RyaW5nPiBzdHJzID0ge3N0cmluZygiMTIzIiksIHN0cmluZygiMzIxIiksIHN0cmluZygiNTU1Iil9OwogICAgYXV0byByZXMgPSBiYXIoc3Rycyk7CiAgICBmb3IoYXV0byBzOiByZXMpewogICAgICAgIGZvcihhdXRvIHN0cjogcyl7CiAgICAgICAgICAgIGNvdXQgPDwgc3RyIDw8ICIgIjsKICAgICAgICB9CiAgICAgICAgY291dCA8PCBlbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0=