P哥旋转

题目背景

P哥开始学字符串了!

题目描述

P 哥学会了字符串处理的新方法——旋转。 “旋转”是这样一种操作:将原字符串最后面的字符抹去,然后把它加到最前面,得到一个新串。 P 哥可以进行无数次“旋转”操作,**让得到的新串中本质不同的回文子串尽可能多**。 两个回文串本质不同,当且仅当它们长度不同,或至少有一个相同位置的字符不同。 现在 P 哥得到了一个串 $S$,请你通过“旋转”操作帮 P 哥达成他的目标(即上面的加粗字体部分),并输出新串中不同的回文子串的个数。

输入输出格式

输入格式


输入共一行,代表串 $S$,保证只有小写英文字母。

输出格式


输出一个整数表示答案。

输入输出样例

输入样例 #1

ioimoio

输出样例 #1

7

输入样例 #2

fcfcfcfcfczxqprvvlpstpasxvpyyhaejxehdlhckmwmibsjwqbmfzlwpjqjghmlxunefabkpryqxbkqridpqrzemvfcfcfcfcfc

输出样例 #2

47

说明

设 $n$ 为串 $S$ 的长度。 - 对于前 $20\%$ 的数据,$n \le 100$。 - 对于前 $40\%$ 的数据,$n \le 2000$。 - 对于另 $10\%$ 的数据,保证得出正确答案不用进行旋转。 - 对于 $100\%$ 的数据,$n \le 1.5\times 10^6$。 此外,对于后 $50\%$ 的数据,保证串 $S$ 的非随机部分长度不超过 $5000$。 **注意**:本题采用 subtask 方式计分。前 $50\%$ 的数据是 $subtask#1$,该 subtask 采用加和的方式计分(你可以认为是传统计分方式)。后 $50\%$ 的数据是 $subtask#2$,该 subtask 采用取 $\min$ 的方式计分(即只要错一个点,后 $50$ 分全部没有)。