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).
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.
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.
| 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 |