Na teoria da codificação, os códigos sem prefixo são freqüentemente usados como conjuntos de palavras, nenhuma das quais é um prefixo. Diz-se que a palavra α
precede a palavra β
se α
for obtido de β
excluindo zero ou mais caracteres no final. Por exemplo, as palavras a
, ab
e aba
são prefixos da palavra aba
. Por exemplo, o conjunto de palavras aba
, aa
e bac
é um código sem prefixo, enquanto o conjunto de abac
, aba
, ba
não está presente porque a palavra aba
é um prefixo da palavra abac
.
Professor Decipher trabalha no Laboratório de Pesquisa de Informações Inúteis e estuda sua nova invenção de códigos quase prefixados. Um conjunto de palavras é chamado de código quase sem prefixo de nível k
se o maior prefixo comum de quaisquer duas palavras do conjunto não exceder k
de comprimento. Por exemplo, o conjunto abac
, abc
, ba
é um código de nível 2 quase sem prefixo, e o conjunto abac
, abab
, ba
não existem porque o maior prefixo comum de abac
e abab
é 3.
A próxima tarefa que o professor Decifro definiu para seus assistentes de laboratório é a seguinte: dado um conjunto de palavras e um número k
, é necessário escolher entre os dados palavras o conjunto máximo, que é quase código de nível livre de prefixo k
. Você, como assistente de laboratório júnior, foi designado para escrever o programa correspondente.