char s[500010]; a[500010];b[500010]; long long r; typedef long long H; H rm=1000000007; main(i,j,k,l,m){ gets(s); l=strlen(s); H r1=0; H r2=0; H r3=1; for(i=0;i<l;++i){ r1=r1*rm+s[i]; r2=r2+r3*s[i]; r3*=rm; if(r1==r2){ H r4=0; H r5=0; H r6=1; for(j=i+1;j<l;++j){ r4=r4*rm+s[j]; r5=r5+r6*s[j]; r6*=rm; if(r4==r5){ ++a[j]; } } } } { H r7=0; H r8=0; H r9=1; for(j=j-1;j>=0;--j){ r7=r7*rm+s[j]; r8=r8+r9*s[j]; r9*=rm; if(r7==r8){ ++b[j]; } } } m=0; for(i=0;i<l;++i){ m+=a[i]; r+=m*b[i+2]; } printf("%lld",r); return 0; }