c в строке построй список вида [c.upper(), c.lower()], если это буква. Если не буква, список должен содержать один элемент.[['a', 'A'], ['.'], ['b', 'B'], ['c', 'C'], ['@'], ['d', 'D']]itertools.product(*patterns) и итерируешься по тому, что оно вернёт.