У комп'ютерному зорі, ланцюговий код — це послідовність чисел, що представляють напрямки при обході контуру об'єкта. Наприклад, на наступному малюнку показано контур, який представлений ланцюговим кодом (починаючи з верхнього лівого кута).
Два ланцюгових коди можуть представляти одну й ту ж фігуру, якщо фігура була повернута або якщо для контуру вибрано іншу початкову точку. Щоб нормалізувати код відносно обертання, можна обчислити першу різницю ланцюгового коду. Перша різниця визначається як підрахунок кількості змін напрямку проти годинникової стрілки між послідовними елементами у ланцюговому коді (останній елемент вважається послідовним до першого). У наведеному вище коді перша різниця дорівнює
Нарешті, щоб нормалізувати за вибором початкової точки, розглядають усі циклічні зсуви першої різниці і серед них вибирають лексикографічно найменший код. Отриманий код називається числом фігури (shape number).
У цьому випадку є числом фігури для наведеної вище форми.
Вхід складається з кількох випадків. Вхідні дані для кожного випадку подаються в одному рядку, що містить ланцюговий код форми. Довжина ланцюгового коду не перевищує , і всі цифри в коді мають значення від до включно. Контур може самоперетинатися і не обов'язково повертається у початкову точку.
Для кожного випадку виведіть знайдене число фігури після виконання описаної вище нормалізації.
Приклад 1