题目
题目描述
博士经常阅读图书馆里的书籍。有一天,她在书中看到了一个长长的只由小写字母组成的字符串 S S S
博士发现这个串有很多子序列都是回文串,非常优美,于是便列出了这个串的所有非空回文子序列
可是,博士忽然发现,她列出了很多相同的回文串
博士想知道,如果她只想把每种重复的串保留一个,一共需要从她的列表中移除多少回文串?
子序列 S S S的一个子序列可以用一个数组 p p p表示,构成的子序列为 S p 1 S p 2 ⋯ ⋯ S p m S_{p_1}S_{p_2} \cdots \cdots S_{p_m} Sp1Sp2⋯⋯Spm,其中 m m m为该子序列的长度
满足 0 < p 1 < p 2 < ⋯ ⋯ < p m ⩽ ∣ S ∣ 0 < p_1 < p_2 < \cdots \cdots < p_m \leqslant |S| 0<p1<p2<⋯⋯<pm⩽∣S∣
输入格式
一行一个非空字符串 S S S
输出格式
输出一行一个整数,表示博士一共需要移除多少重复的回文串。由于答案可能很大,请对 1 0 9 + 7 10^9+7 109+7取模
样例
样例输入1
bccb
样例输出1
3
样例输入2
abcdabcdabcdabcdabcdabcdabcdabcddcbadcbadcbadcbadcbadcbadcbadcba
样例输出2
679266098
数据范围与提示
样例1解释
对于第一组样例,非空子序列一共有:
{ b , c , c , b , b c , b c , b b , c c , c b , c b , b c c , b c b , b c b , c c b , b c c b } \{b,c,c,b,bc,bc,bb,cc,cb,cb,bcc,bcb,bcb,ccb,bccb\} {
b,c,c,b,bc,bc,bb,cc,cb,cb,bcc,bcb,bcb,ccb,bccb}
其中回文子序列有:
{ b , c , c , b , b b , c c , b c b , b c b , b c c b } \{b,c,c,b,bb,cc,bcb,bcb,bccb\} {
b,c,c,b,bb,cc,bcb,bcb,bccb}
需要删去 3 3 3个重复的回文子序列
数据范围
对于 30 % 30 \% 30%的数据, ∣ S ∣ ⩽ 20 |S| \leqslant 20 ∣S∣⩽20
对于 60 % 60 \% 60%的数据, ∣ S ∣ ⩽ 100 |S| \leqslant 100 ∣S∣⩽