Minimaler Abstand zwischen sich wiederholenden Teilstrings

Java Hard strings

Aufgabe «Minimaler Abstand zwischen sich wiederholenden Teilstrings»

Gegeben ist eine Zeichenkette S, die aus Kleinbuchstaben des lateinischen Alphabets besteht. Es soll der minimale Abstand zwischen den Startindizes zweier identischer, sich nicht überschneidender Teilstrings der Länge L gefunden werden, wobei L die maximal mögliche Länge ist, für die solche Teilstrings existieren. Wenn es keine identischen, sich nicht überschneidenden Teilstrings der Länge L gibt, wird -1 ausgegeben. Der Abstand ist die Differenz zwischen den Startindizes des zweiten und des ersten Teilstrings. Die Teilstrings dürfen sich nicht überschneiden (d. h. ihre Intervalle haben keine gemeinsamen Zeichen). Einschränkungen: Die Länge der Zeichenkette beträgt bis zu 10^5.

Eingabeformat

Eine Zeichenkette S, bestehend aus Kleinbuchstaben des lateinischen Alphabets (a-z). Die Länge der Zeichenkette beträgt 1 bis 100000.

Ausgabeformat

Eine ganze Zahl – der minimale Abstand zwischen den Startindizes zweier identischer, sich nicht überschneidender Teilstrings der maximal möglichen Länge L, oder -1, falls solche Teilstrings nicht existieren.

Beispiele

Beispiel 1

EINGABE
aababc
AUSGABE
2

Beispiel 2

EINGABE
ababa
AUSGABE
2

Beispiel 3

EINGABE
abcdefg
AUSGABE
-1
main.java