#include<iostream>
#include<algorithm>
#include<fstream>
#include<string>
#include<map>
using namespace std;
int main()
{
string a;
map<string, int> anagramy; // <typ klucza, typ wartosci> nazwa mapy
int ile=1;
int suma=0;
ifstream odczyt ("dane.txt");
ofstream zapis ("wynik.txt");
while(!odczyt.eof())
{
odczyt>>a;
sort(a.begin(), a.end()); //sort dziala w czasie O(n log n)
anagramy[a]++; // sumuje wystapienia tego samego klucza
ile=max(ile, anagramy[a]);
}
map<string, int>::iterator it; //deklaracja iteratora dla mapy (slownika)
for(it=anagramy.begin(); it!=anagramy.end(); ++it)
{
zapis<<it->first<<" "<<it->second<<endl; //elementy tablicy wypisane rosnaco
// i w porzadku alfabetycznym po it->first
if(it->second==1)
suma++; // sumuje pojedyncze wystapienia liczb w pliku
}
zapis<<endl<<endl<<endl<<ile;
zapis<<endl<<suma;
odczyt.close();
zapis.close();
return 0;
}