Dica: após arranjar um arquivo com as palavras, crie um Map<String, List> que contenha, para uma determinada combinação de letras, os anagramas possíveis. Para ficar fácil achar na combinação de letras, ordene as letras dentro da palavra. Vou dar um exemplo.
Digamos que sua lista de palavras tenha:
ramo
america
amor
roma
omar
iracema
mora
hostil
Crie um método que, dada uma palavra, retorne a palavra com as letras ordenadas. Por exemplo, para a palavra “hostil”, as letras ordenadas formariam “hilost”.
A seguir, leia cada linha desse arquivo, e monte um Map<String, List> onde a chave é a palavra com as letras ordenadas, e o valor é uma lista das palavras que, ordenadas, dão essa palavra. Por exemplo, para o arquivo acima, teríamos:
amor -> ramo, amor, roma, omar, mora
aaicerm -> america, iracema
hilost -> hostil
Depois, para usar essa estrutura de dados, basta passar a chave, que você terá como valor a lista de anagramas encontrados no arquivo.