ICM Technex 2018 and Codeforces Round 463 (Div. 1 + Div. 2, combined)
G
Palindrome Partition
Codeforces
2900
原题
← F→
翻译中…

Given a string $*s*$, find the number of ways to split $*s*$ to substrings such that if there are $*k*$ substrings $(*p*_{1}, *p*_{2}, *p*_{3}, ..., *p*_{*k*})$ in partition, then $*p*_{*i*} = *p*_{*k* - *i* + 1}$ for all $*i*$ $(1 ≤ *i* ≤ *k*)$ and $*k*$ is even.

翻译中…

Since the number of ways can be large, print it modulo $10^{9} + 7$.

翻译中…

Input

翻译中…

The only line of input contains a string $*s*$ $(2 ≤ |*s*| ≤ 10^{6})$ of even length consisting of lowercase Latin letters.

翻译中…

Output

翻译中…

Print one integer, the number of ways of partitioning the string modulo $10^{9} + 7$.

翻译中…

Note

翻译中…

In the first case, the only way to partition the string is $*ab*|*cd*|*cd*|*ab*$.

翻译中…

In the second case, the string can be partitioned as $*ab*|*b*|*ab*|*ab*|*ab*|*ab*|*b*|*ab*$ or $*ab*|*b*|*abab*|*abab*|*b*|*ab*$ or $*abbab*|*ab*|*ab*|*abbab*$.

翻译中…

样例

Input #1
abcdcdab
Output #1
1
InputCopy OutputCopy
Input #2
abbababababbab
Output #2
3
InputCopy OutputCopy
题目信息
题号
932G
时间限制
3 s
内存限制
256 MB
标签
动态规划
后缀结构
字符串

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。