#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int ll; typedef pair P; typedef unsigned long long ull; ull powmod(ull a, ll k){ if(a==0) return 0; ull ap=a, ans=1; while(k>0){ if(k%2==1){ ans*=ap; } ap=ap*ap; k/=2; } return ans; } ull inv(ull a){ return powmod(a, (1ll<<62)-1); } int main() { string s; cin>>s; int n=s.size(); ull h[5001], hr[5001]; h[0]=(s[0]-'a'); ull b=67; ull bp=b; for(int i=1; i=0; i--){ hr[i]=hr[i+1]+(bp*(s[i]-'a')); bp*=b; } ull br=inv(b); ull brp[5000]; brp[0]=1; for(int i=1; i