我們定義一種對字串的操作,稱為折疊。折疊由若干次(可以是零次)對折組成。每次對折都發生在兩個相鄰字母之間,將字串的後半部分(距離字串開頭較遠的部分)放到前半部分(距離字串開頭較近的部分)的上方,使兩者方向相反,並在對折位置對齊。透過這個操作,字串會變成一個結構,其層數比進行的對折次數多一。
折疊後,可以將字串看成若干堆字母。如果同一堆中的所有字母都相同,我們稱這個折疊是合法的。
折疊的對應集合,是原字串中緊接在各個對折位置之前的字母位置所組成的集合。例如,只在第 2 個與第 3 個字母之間對折一次的折疊,其對應集合為 $\{2\}$;而不進行任何對折的折疊,其對應集合為空集合。兩個折疊相同,若且唯若其對應集合相同。
如果能選出整數 $a$ 和 $b$($0 \le b < a$),使得 $x \in S \iff 1 \le x < n,\ x \equiv b \pmod a$,則稱集合 $S$ 是等差的,其中 $n$ 是字串的長度。例如,當 $n$ 等於 $10$ 時,集合 $\varnothing$、$\{2\}$、$\{1,9\}$、$\{2,4,6,8\}$ 被視為等差的,而集合 $\{1,2,4\}$、$\{1,5\}$、$\{7,8,9\}$ 則不是。
如果一個折疊是合法的,而且其對應集合是等差的,就稱它是絕妙的。請參閱下一頁的圖片以便理解。
給定一個字串,計算這個字串的絕妙折疊數量。
輸入格式
唯一一行包含一個長度為 $n$($1 \le n \le 10^6$)的字串,由拉丁字母、數字、底線或連字號組成。
輸出格式
輸出一個整數——給定字串的絕妙折疊數量。
範例
輸入格式 1
aaaaa
輸出格式 1
9
輸入格式 2
V-oo-V
輸出格式 2
2
輸入格式 3
gritukan
輸出格式 3
1
輸入格式 4
Lhic
輸出格式 4
1
輸入格式 5
OO0OOO00O0OOOO0O00OOO0OO
輸出格式 5
6
輸入格式 6
SpyCheessee
輸出格式 6
3
輸入格式 7
Aa
輸出格式 7
1
輸入格式 8
228322
輸出格式 8
4
輸入格式 9
______________________________________
輸出格式 9
380
說明
第一個範例中,絕妙折疊的對應集合為:$\varnothing$、$\{1\}$、$\{2\}$、$\{3\}$、$\{4\}$、$\{1,3\}$、$\{1,4\}$、$\{2,4\}$、$\{1,2,3,4\}$。
這是字串 aabccbaa 的一個絕妙折疊。對應集合為 $\{1,4,7\}$。
這是字串 abc 的一個絕妙折疊。對應集合為 $\varnothing$。
這不是合法的折疊,但它確實是一個折疊,且其對應集合是等差的。對應集合為 $\{2,6,10\}$。
這不是折疊,因為上半部分與下半部分的方向相同。
這不是折疊,因為上半部分不是方向相同(如果認為它向右延伸),就是沒有對齊(如果認為它向左延伸)。
這是合法的折疊,但其對應集合不是等差的。對應集合為 $\{4,6\}$。
這就是如何使用 TeX。