eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Пароли

Пароли

Ральф хочет зарегистрироваться на трех сайтах. Для каждого сайта Ральф хочет выбрать свой пароль, причем все три пароля должны быть различны. У Ральфа есть любимая строка s. Для удобства запоминания паролей, Ральф решил разбить s на три части: a, b и c. Будем обозначать последовательное записывание двух строк операцией +. Тогда s = a + b + c. В качестве паролей Ральф будет использовать a + b, b + c и a + c.

Помогите Ральфу посчитать количество различных способов разбить строку s на a, b и c, чтобы получившиеся пароли были различные. Два способа являются разными, если в них отличается хотя бы одна из строк a, b или c.

Входные данные

Дана строка s (1 ≤ |s| ≤ 500000), состоящая из строчных латинских букв.

Выходные данные

Выведите одно целое число - искомое количество разбиений.

Лимит времени 1 секунда
Лимит использования памяти 128 MiB
Входные данные #1
aabc
Выходные данные #1
2
Входные данные #2
ababcb
Выходные данные #2
9
Источник 2018 Цикл Интернет-олимпиад для школьников, вторая командная олимпиада сезона, базовая номинация, 10 ноября, Задача H