You can do this.
- sort each word and add it to a MultiMap of sorted word to actual word.
- look up each word to use as an anagram by sorting the word first.
The index cost is once and O(N) where N is the number of words.
After that the cost of sorting is O(M log M) to sort the letters where M is the number of letters. This is very cheap compared to the cost of calculating permutations.
BTW This approach, the words are only scanned once, in advance.