Минимальное расстояние между повторяющимися подстроками

Java Сложный strings

Задача «Минимальное расстояние между повторяющимися подстроками»

Дана строка S, состоящая из строчных букв латинского алфавита. Необходимо найти минимальное расстояние между начальными индексами двух одинаковых непересекающихся подстрок длины L, где L — максимально возможная длина, для которой такие подстроки существуют. Если одинаковых непересекающихся подстрок длины L нет, вывести -1. Расстояние — это разность между начальными индексами второй и первой подстроки. Подстроки не должны пересекаться (т.е. их интервалы не имеют общих символов). Ограничения: длина строки до 10^5.

Формат ввода

Одна строка S, состоящая из строчных букв латинского алфавита (a-z). Длина строки от 1 до 100000.

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

Одно целое число — минимальное расстояние между начальными индексами двух одинаковых непересекающихся подстрок максимально возможной длины L, либо -1, если таких подстрок нет.

Примеры

Пример 1

ВВОД
aababc
ВЫВОД
2

Пример 2

ВВОД
ababa
ВЫВОД
2

Пример 3

ВВОД
abcdefg
ВЫВОД
-1
main.java