[PI015] - Anagramas


O problema

Anagrama: do Gr. aná, para cima, para trás + grámma, letra
s. m., transposição de letras;
inversão das letras de um nome para formar outro.

A maior parte dos fãs de quebra-cabeças está habituado a lidar com anagramas, ou seja, grupos de palavras que usam o mesmo conjunto de letras, mas com uma ordem diferente (por exemplo, sacar, casar e caras são anagramas).

Dada uma lista de palavras, a tua tarefa é descobrir que palavras são anagramas uma das outras, e saber o tamanho de cada classe de anagramas. Por classe de anagramas, entende-se o grupo de palavras que usam as mesmas letras.

Por exemplo, imagina as seguintes palavras:

maca
lima
cama
mila
texto

maca e cama são anagramas, lima e mila também e texto não é anagrama de nenhuma outra palavra. Neste caso existem três classes de anagramas. Cada classe de anagrama é repreentada pela palavra alfabeticamente menor dessa classe. Neste caso, as classes seriam representadas respectivamente por cama (classe com 2 palavras), lima (2 palavras) e texto (1 palavra).

Input

Um input é constituído por vários casos.

Cada caso começa por ter um número N indicando o número de palavras a processar. Seguem-se N linhas, cada uma contendo uma palavra, que tem no máximo 50 letras, que são todas sempre minúsculas.

O input termina com um caso onde N é zero.

Output

Para cada caso deve começar por ser imprimida uma linha de output, "#NUM", onde NUM representa o número do caso.

De seguida devem vir todas as classes de anagramas no formato "representanteDaClasse tamanhoDaClasse". As classes devem vir ordenadas pelo seu tamanho (por ordem decrescente), e em caso de empate, pela ordem alfabética das suas palavras representantes.

O output entre dois casos deve ser sempre separado por uma linha.

Vê o exemplo para clarificar a maneira como deve ser feito o output.

Exemplo de input/output

Input Output
5
maca
lima
cama
mila
texto
3
caras
casar
sacar
1
teste
0

#1
cama: 2
lima: 2
texto: 1

#2
caras: 3

#3
teste: 1