EduBrick

I. Строчечки

3000 мс · 256 МБ · всё или ничего

Кирилл написал строку, а Дима утверждает, что получил свою строку циклическим сдвигом строки Кирилла вправо на несколько шагов. Сдвиг строки abcde на 2 позиции вправо даёт deabc.

Проверьте, правда ли это, и если да — найдите наименьший возможный размер сдвига.

Основа решения — старое наблюдение: все циклические сдвиги строки AA — это подстроки длины nn строки A+AA + A.

Сдвиг вправо на rr даёт строку A[n−r..]+A[..n−r)A[n-r..] + A[..n-r), то есть подстроку A+AA + A, начинающуюся в позиции n−rn - r. Значит, надо найти все вхождения BB в A+AA + A на позициях 0≤p<n0 \le p < n и взять r=(n−p) mod nr = (n - p) \bmod n.

Наименьший rr — это r=0r = 0, если A=BA = B, и иначе наибольшее подходящее pp.

Искать вхождения — снова КМП по склейке B+#+A+AB + \# + A + A. Длина склейки около 3n3n, то есть до 3⋅1063 \cdot 10^6 — по времени и памяти проходит.

Отдельно стоит подумать, почему нельзя просто перебрать все nn сдвигов и сравнить: это O(n2)O(n^2) и при n=106n = 10^6 безнадёжно.

Строки состоят из больших и маленьких букв, так что регистр важен: A и a — разные символы.

Формат ввода

Первые две строки содержат строки Кирилла и Димы.

Длины строк одинаковы, не превосходят 10610^6 и не равны нулю. Строки состоят из больших и маленьких латинских букв.

Формат вывода

Единственное число — наименьший размер сдвига, или −1-1, если такого сдвига не существует.

Примеры

ввод
zabcd
abcdz
вывод
4
ввод
a
b
вывод
-1
Войдите, чтобы отправлять решения.