\documentclass{maratona} \begin{document} \begin{ProblemaAutor}{}{Conversor Fonético Genérico}{1}{256}{Leetcode 127} Nos laboratórios secretos de linguística computacional do \textbf{Instituto de Filologia Binária (IFB)}, um grupo de pesquisadores (e estagiários desesperados) finalmente concluiu o desenvolvimento do \textit{Conversor Fonético Genérico} (CFG). Este dispositivo revolucionário, que mais parece uma torradeira antiga com fios coloridos, é capaz de transmutar uma palavra em outra por meio de "mutações linguísticas controladas". O CFG, no entanto, opera sob regras quânticas muito estritas: \begin{enumerate} \item \textbf{Mutação Única:} Em cada etapa da transformação, \textbf{apenas uma letra} da palavra atual pode ser alterada para uma nova letra. \item \textbf{Validação de Realidade:} A nova palavra gerada pela mutação deve ser "real", ou seja, ela \textbf{deve existir} no vasto (e um tanto pedante) dicionário interno da máquina. \end{enumerate} Se uma mutação gerar uma palavra que não está no dicionário (um "blabismo vocabular"), a transformação é rejeitada, o fusível principal do CFG queima, e o processo falha catastroficamente. Os pesquisadores querem agora otimizar o processo. Eles não querem qualquer transformação; eles precisam encontrar a \textbf{sequência de transformação mais eficiente} — aquela que usa o menor número possível de palavras para ir da palavra inicial até a palavra final. Dadas duas palavras, \texttt{inicio} e \texttt{fim} (ambas com o mesmo comprimento), e um dicionário de palavras válidas, determine o \textbf{menor número de palavras} na sequência de transformação que converte \texttt{inicio} em \texttt{fim}, obedecendo às regras de mutação do CFG. Note que todas as palavras intermediárias na sequência, bem como a palavra \texttt{fim}, devem existir no dicionário. A palavra \texttt{inicio} não precisa estar no dicionário (ela é o ponto de partida). Se não for possível realizar a transformação, o CFG deve retornar $0$. \Entrada A entrada começa com dois inteiros $n$ e $m$, onde $n$ é o número de palavras disponíveis no dicionário ($1 \leq n \leq 5000$) e $m$ o comprimento de cada palavra ($1 \leq m \leq 10$). Na segunda linha há duas palavras: \texttt{inicio} e \texttt{fim}, ambas contendo exatamente $m$ letras minúsculas do alfabeto. Após isso, seguem $n$ linhas, cada uma contendo uma palavra de $m$ letras minúsculas, representando as palavras do dicionário interno do CFG. Todas as palavras do dicionário são únicas. \Saida A saída consiste em um único número inteiro: o comprimento da menor sequência de transformação que converte a palavra \texttt{inicio} na palavra \texttt{fim}, seguindo as regras do CFG. Se não for possível realizar a transformação, o programa deve imprimir $0$. \ExemploEntrada \begin{Exemplo} \texttt{6~3} & \texttt{4}\\ \texttt{mao~sol} & \\ \texttt{cao} & \\ \texttt{sal} & \\ \texttt{sao} & \\ \texttt{sai} & \\ \texttt{mel} & \\ \texttt{sol} & \\ \rowcolor{gray!20}\texttt{7~4} & \texttt{0}\\ \rowcolor{gray!20}\texttt{lata~fogo} & \\ \rowcolor{gray!20}\texttt{lido} & \\ \rowcolor{gray!20}\texttt{lapa} & \\ \rowcolor{gray!20}\texttt{lava} & \\ \rowcolor{gray!20}\texttt{fava} & \\ \rowcolor{gray!20}\texttt{fogo} & \\ \rowcolor{gray!20}\texttt{lago} & \\ \rowcolor{gray!20}\texttt{logo} & \\ \end{Exemplo} \Notas Caso de Teste 1: Neste caso, queremos transformar "mao" em "sol". O dicionário contém palavras intermediárias que permitem mutações válidas alterando apenas uma letra por vez. Uma possível sequência mínima é: mao → sao → sal → sol A sequência tem 4 palavras no total. Caso de Teste 2: Não é possível converter "lata" em "fogo", portanto a resposta é 0.\end{ProblemaAutor} \end{document}