Восстановление пароля

Заметим, что значения символов строки нисколько не ограничивают ответ — по начальному положению курсора и входным данным всегда можно найти начальную строку.

Если длина строки  ≥ 2, то можно составить пары сдвигов (влево, вправо) — их количество составит min(l, r) (по очереди сдвигать курсор влево и вправо). Остальные |l - r| сдвигов должны уместиться в строке, поэтому если |l - r| > n - 1, то ответа не существует. Если l > r, то можно выбрать конец строки в качестве начальной позиции, иначе начало строки.

Отдельно рассмотрим случай, когда строка состоит из одного символа.

Чтобы подобрать строку, из которой могла данными действиями получится данная. Можно предположить, что все изменения буквы были сделаны в стартовой позиции, а потом уже были переводы курсора. Так как буквы переключаются по циклу, можно не умоляя общности сказать, что изменений буквы было . После чего «откатить» текущую букву назад на нужно число.