import itertools import re from dictionary import Dictionary def candidates(letters, dictionary: Dictionary, excludes, min=2): possibilities = [] for length in range(min, len(letters) + 1): for comb in itertools.combinations(letters, length): for perm in itertools.permutations(comb): word = "".join(perm) possibilities.append(word) return dictionary.filter(possibilities, excludes) def filter_possibilities(possibilities, regex): return set(filter(regex.match, possibilities))