import Data.List (delete) import qualified Data.Set as Set wordSet = Set.fromList ["Aarhus", "Aaron", "Ababa", ..."Zulu", "Zulus", "Zurich"] permutationsOf "" = [""] permutationsOf word = [letter:rest | letter <- word, rest <- permutationsOf (delete letter word)] anagrams = [perm | perm <- permutationsOf "documenting ", all inWordSet (words perm)] where inWordSet word = word `Set.member` wordSet main = print anagrams