да, оптимизировать нужно по количеству перестановок, причем за одну перестановку переставить можно только одну карту. Кстати, карт не обязательно 52, но в наборе они все уникальны.
Александр: ну на мой взгляд, любой вопрос можно рассматривать как задание, и наоборот (поправьте, если что). Совсем недавно полюбил программирование, поэтому в этом деле очень зеленый.
То что родилось у меня в голове, даже показывать не хотел:
1) переводим строку в список с помощью l0 = list(s)
2) создаем список нечетных элементов l1 = l0[::2]
3) создаем список четных элементов l2 = l0[1::2],
4) l = zip(l1,l2).
Здесь маленько застрял, потому что получился список в списке, насколько понял, а в идеале нужен список строк (но в принципе и с этим уже могу работать). Чую нутром, это делается проще:)