;;; A ideia aqui e' representar o problema como um grafo G = (V,E), ;;; onde V e' o conjunto dos sites e E sao os sites que se tocam. ;;; ;;; O grafo seria orientado, sempre contendo pares de arestas opostas ;;; e representado como listas de adjacencia. ;;; ;;; Asscoiados a cada vertice (site) temos: seu comprimento e as ;;; posicoes ja' com caracteres definidos; as demais posicoes ;;; estariam livres. ;;; ;;; Associados a cada aresta teriamos: a posicao no site 1 e a posicao ;;; no site 2; posicoes comecam, de zero. ;;; ;;; Basicamente, a solucao usa uma busca em largura no grafo, com ;;; backtrack. A cada visita num vertice, todas as palavras do ;;; tamanho certo e que coincidem com os caracteres ja' definidos sao ;;; tentadas, na ordem da lista de palavras da entrada. ;;; ;;; Ha' tambem uma parte complementar da leitura, onde sao montados o ;;; grafo e um hash de palavras por tamanho.