As I told before here is second implementation of one word anagrams, which prepares lookup table for all available words, if it is not generated and afterwards uses it for fast lookup.
The implementation of lookup table generation is quite unoptimized, but it is only done once per vocabulary.
If you want to change dictionary, add dictionary selection routine instead of fixed one here or just rename/delete old dictionary and anawords and analist files. Then make copy of your dictionary in same dictionary as this program with name list.txt.
Dict prepared in 0.726 s Dict saved for future Preparations took 0.889 s
Output: Saved dict loaded Preparations took 0.132 s To stop: enter empty line Give word: meti ['emit', 'item', 'mite', 'time'] 0 ms Give word: ewd ['dew', 'wed', "we'd"] 0 ms Give word: team ['mate', 'meat', 'tame', 'team'] 0 ms Give word: mocupret ['computer'] 0 ms Give word: nocpurte Word is not in vocabulary 0 ms Give word: