Алгоритм навскидку (не факт, что минимизирующий число вращений):
1) рассматриваем массив цифр, ищем каких больше всего, допустим, их

. Вычитаем из

- получаем нужное число вращений.
2) рассматриваем отдельно каждый интервал между позициями тех цифр, количество которых максимально - по логике пункта 1. До тех пор, пока в интервалах не останется максимум по одной цифре каждого вида.
ЗЫ если у нас получилось на определенном шаге равное количество разных цифр - пробежать оба варианта до самого конца (как граф) и из всех веток выбрать с минимумом вращений.