var
a:array[1..200000] of string[10];
i,j,s:integer;n:longint;
procedure qsort(l,r:integer);
var mid,p:string[10];lei,lej,lem:integer;
begin
i:=l; j:=r;
mid:=a[(l+r) div 2];lem:=length(mid);
repeat
lei:=length(a[i]);lej:=length(a[j]);
while ( (lei<lem) or ( (lei=lem) and (ord(a[i][1])<ord(mid[1])))) do inc(i);
while ( (lej>lem) or ( (lej=lem) and (ord(a[j][1])>ord(mid[1])))) do dec(j);
if i<=j then
begin
p:=a[i]; a[i]:=a[j]; a[j]:=p;
inc(i); dec (j);
end;
write(i,'here ');
until i>j;
if l<j then qsort(l,j);
if i<r then qsort(i,r);
end;
begin
readln(n);
for i:=1 to n do
readln(a[i]);
qsort(1,n); s:=1;
for i:=1 to n do begin
if a[i]=a[i+1] then
inc(s) else begin
write(a[i],' ',s);writeln;
s:=1;end;
end;
end.