Что вам нужно сделать, это преобразовать массив слов в хеш-таблицу, где ключом являются отсортированные буквы каждого слова. Пример:
['car', 'shoe', 'train']
=> {'acr': ['car'],
'ehos': ['shoe'],
'ainrt': ['train']}
Затем вы берете письма пользователя, сортируете их и создаете хеш-таблицу (любой словарь подразумевает это, но хеш-таблицы наиболее эффективны в этом случае), используя отсортированные буквы в качестве ключа. Список, соответствующий вашему ключу, является списком слов, которые вы можете сделать с этими буквами. Преимущество состоит в том, что временная сложность O (n) = 1.