Given a string s, transform every letter individually to be lowercase or uppercase to create another string. Return a list of all possible strings we could create.
Use backtracking: iterate through each character. If it is a digit, skip it. If it is a letter, branch into two recursive calls — one with lowercase and one with uppercase.
- Start DFS at index 0 with the original string as a char array.
- At each index, if it is a digit move to index+1.
- If it is a letter, convert to lowercase, recurse, then convert to uppercase and recurse again.
- When index == s.length(), add the current char array (as string) to results.
- Time Complexity: O(2^L * N) where L is number of letters
- Space Complexity: O(N * 2^L) for result storage