def anagrams(s): if s == "": return [s] else: ans = [] list_without_first = anagrams(s[1:]) print list_without_first for w in list_without_first: for pos in range(len(w)+1): ans.append(w[:pos]+s[0]+w[pos:]) return ans st = "adcb" print anagrams(st)