Distancia mínima entre subcadenas repetidas

Java Hard strings

Tarea «Distancia mínima entre subcadenas repetidas»

Se da una cadena S compuesta por letras minúsculas del alfabeto latino. Es necesario encontrar la distancia mínima entre los índices iniciales de dos subcadenas idénticas y no superpuestas de longitud L, donde L es la longitud máxima posible para la cual existen dichas subcadenas. Si no hay subcadenas idénticas y no superpuestas de longitud L, mostrar -1. La distancia es la diferencia entre los índices iniciales de la segunda y la primera subcadena. Las subcadenas no deben superponerse (es decir, sus intervalos no tienen caracteres en común). Restricciones: longitud de la cadena hasta 10^5.

Formato de entrada

Una cadena S compuesta por letras minúsculas del alfabeto latino (a-z). La longitud de la cadena es de 1 a 100000.

Formato de salida

Un número entero: la distancia mínima entre los índices iniciales de dos subcadenas idénticas y no superpuestas de la longitud máxima posible L, o -1 si no existen dichas subcadenas.

Ejemplos

Ejemplo 1

ENTRADA
aababc
SALIDA
2

Ejemplo 2

ENTRADA
ababa
SALIDA
2

Ejemplo 3

ENTRADA
abcdefg
SALIDA
-1
main.java