#include #include #include #include #include #include #include #include #include #include #define INF 1000000000ll #define MOD 1000000007ll #define EPS 1e-10 #define REP(i,m) for(long long i=0; i P; typedef long double ld; vector memo; string s; ll n; ll dfs(ll pos) { if(memo[pos]!=-1) return memo[pos]; string l,r; l+=s[pos]; r+=s[n-1-pos]; ll ret=1; FOR(i,pos+1,n/2+1) { if(l==r) ret+=dfs(i); ret%=MOD; if(i==n-1-i) continue; l+=s[i]; r=s[n-1-i]+r; } return memo[pos]=ret%MOD; } int main() { cin.tie(0); ios::sync_with_stdio(false); cin>>s; n=(ll)s.size(); memo.resize(n); REP(i,n) memo[i]=-1; cout<