Мне видится это так.
Берем исходный массив { 1, 0, 2, 2, 3, 0, 1 }.
Строка, которую надо переставить { 3, 2, 0, 0, 1, 1, 2 }.
Берем первый элемент 3, он не на месте, ищем где он должен быть, переставляем.
Получаем { 1, 2, 0, 0, 3, 1, 2 }, увеличиваем число использованны перестановок.
Снова смотрим первый элемент, он совпал, смотрим второй.
И так пока не дойдем до конца.
(есть чувство что надо что-то еще учесть, чтобы избежать бесполезных перестановок типа 3 поменять на 3, а еще лучше - удалять из обоих массивов совпадающие по расположению элементы, которые уже не нужно переставлять)
Если по условию задачи возможна ситуация когда строки вообще не совпадают - то проверить на возможность решения удалением из одного массива элементов из другого.