Backtrack with branch on letters.
function letterCasePermutation(s): result = [] def backtrack(index, current): if index == len(s): result.append(current) return char = s[index] if char.isalpha(): backtrack(index + 1, current + char.lower()) backtrack(index + 1, current + char.upper()) else: backtrack(index + 1, current + char) backtrack(0, "") return result
where is letter count.