#include <iostream>
#include <string>
#include <unordered_map>
#include <vector>
#include <algorithm>
using namespace std;
void printAnagram(string s[],int n)
{
unordered_map<string,vector<string> > m;
string t;
for(int i=0;i<n;i++)
{
t=s[i];
sort(t.begin(),t.end());
m[t].push_back(s[i]);
}
for(unordered_map<string,vector<string> >::iterator it=m.begin();it!=m.end();it++)
{
for(int i=0;i<it->second.size();i++)
cout<<it->second[i]<<endl;
}
}
int main() {
string wordArr[] = {"cat", "dog", "tac", "god", "act", "gdo"};
int size = sizeof(wordArr) / sizeof(wordArr[0]);
printAnagram(wordArr, size);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdm9pZCBwcmludEFuYWdyYW0oc3RyaW5nIHNbXSxpbnQgbikKewoJdW5vcmRlcmVkX21hcDxzdHJpbmcsdmVjdG9yPHN0cmluZz4gPiBtOwoJc3RyaW5nIHQ7Cglmb3IoaW50IGk9MDtpPG47aSsrKQoJewoJCXQ9c1tpXTsKCQlzb3J0KHQuYmVnaW4oKSx0LmVuZCgpKTsKCQltW3RdLnB1c2hfYmFjayhzW2ldKTsKCX0KCWZvcih1bm9yZGVyZWRfbWFwPHN0cmluZyx2ZWN0b3I8c3RyaW5nPiA+OjppdGVyYXRvciBpdD1tLmJlZ2luKCk7aXQhPW0uZW5kKCk7aXQrKykKCXsKCQlmb3IoaW50IGk9MDtpPGl0LT5zZWNvbmQuc2l6ZSgpO2krKykKCQljb3V0PDxpdC0+c2Vjb25kW2ldPDxlbmRsOwoJfQp9CmludCBtYWluKCkgewoJIHN0cmluZyB3b3JkQXJyW10gPSB7ImNhdCIsICJkb2ciLCAidGFjIiwgImdvZCIsICJhY3QiLCAiZ2RvIn07CiAgICBpbnQgc2l6ZSA9IHNpemVvZih3b3JkQXJyKSAvIHNpemVvZih3b3JkQXJyWzBdKTsKICAgIHByaW50QW5hZ3JhbSh3b3JkQXJyLCBzaXplKTsKCXJldHVybiAwOwp9