Задача 3. Странные строки

Автор:Центральная предметно-методическая комиссия по информатике   Ограничение времени:1 сек
Входной файл:strange.in   Ограничение памяти:256 Мб
Выходной файл:strange.out  
Максимальный балл:100  

Условие

Рассмотрим строку S, состоящую из строчных букв латинского алфавита. Примером такой строки является, например, строка «abba».

Подстрокой строки S называется строка, составленная из одного или нескольких подряд идущих символов строки S. Обозначим как W(S) множество, состоящее из всех возможных подстрок строки S. При этом каждая подстрока входит в это множество не более одного раза, даже если она встречается в строке S несколько раз.

Например, Wabba») = {«a», «b», «ab», «ba», «bb», «abb», «bba», «abba»}.

Подпоследовательностью строки S называется строка, которую можно получить из S удалением произвольного числа символов. Обозначим как Y(S) множество, состоящее из всех возможных подпоследовательностей строки S. Аналогично W(S), каждая подпоследовательность строки S включается в Y(S) ровно один раз, даже если она может быть получена несколькими способами удаления символов из строки S. Поскольку любая подстрока строки S является также ее подпоследовательностью, то множество Y(S) включает в себя W(S), но может содержать также и другие строки.

Например, Yabba») = Wabba») ∪ {«aa», «aba»}. Знак обозначает объединение множеств.

Будем называть строку S странной, если для нее W(S) = Y(S). Так, строка «abba» не является странной, а, например, строка «abb» является, так как для нее Wabb») = Yabb») = {«a», «b», «ab», «bb», «abb»}.

Будем называть странностью строки число ее различных странных подстрок. При вычислении странности подстрока считается один раз, даже если она встречается в строке S в качестве подстроки несколько раз. Так, странность строки «abba» равна 7, поскольку любая ее подстрока, кроме всей строки, является странной.

Требуется написать программу, которая по заданной строке S определяет ее странность.

Формат входного файла

Входной файл содержит строку S, состоящую из строчных букв латинского алфавита.

Формат выходного файла

Выходной файл должен содержать одно целое число: странность заданной во входном файле строки.

Ограничения

Строка S имеет длину от 1 до 200 000 символов.

Система оценки и описание подзадач

В этой задаче четыре подзадачи. Баллы за каждую подзадачу начисляются только в случае, если все тесты для данной подзадачи успешно пройдены.

Подзадача 1 (29 баллов)

Строка S состоит только из букв «a» и «b». Длина строки S не превышает 50.

Подзадача 2 (12 баллов)

Длина строки S не превышает 50.

Подзадача 3 (25 баллов)

Длина строки S не превышает 1000.

Подзадача 3 (34 балла)

Длина строки S не превышает 200 000.

Получение информации о результатах окончательной проверки

По запросу сообщается результат окончательной проверки на каждом тесте.

Примеры тестов

Входной файл (strange.in) Выходной файл (strange.out)
1
abba
7

0.070s 0.009s 13