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;
}