#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;
}