with open('/usr/share/dict/words') as fp:
    words = set(fp.read().split())
given_word = 'textbook'
perms = (permutations(given_word, i) for i in range(4, len(given_word) + 1))
pwords = (''.join(p) for p in chain(*perms))
matches = words.intersection(pwords)
print(matches)
Сколько общеупотребительных английских слов из 4 букв или более можно составить из букв данного слова (каждая буква может использоваться только один раз)