/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// your code goes here
Scanner sc
= new Scanner
(System.
in);
int n = s.length();
int[][] dpCount = new int[n][n];
int[][] dp = new int[n][n];
for(int i = 0; i < n; i++){
dp[i][i] = 1;
dpCount[i][i] = 1;
}
for(int i = 0; i < n-1; i++){
if(s.charAt(i) == s.charAt(i+1)){
dp[i][i+1] = 1;
dpCount[i][i+1] = 3;
}else{
dpCount[i][i+1] = 2;
}
}
for(int len = 3; len <= n; len++){
for(int i = 0 ; i <= n - len; i++){
int j = i + len - 1;
dpCount[i][j] = dpCount[i][j-1] + dpCount[i+1][j] - dpCount[i+1][j-1];
if(s.charAt(i) == s.charAt(j) && dp[i+1][j-1] == 1){
dp[i][j] = 1;
dpCount[i][j] += 1;
}
}
}
int[] dp3 = new int[n];
for(int stick = 0 ; stick < n; stick++){
int b = 0;
for(int ip = stick ; ip >= 0; ip--){
if(dp[ip][stick] == 1){
b++;
}
}
if(stick+1 < n){
int rest = dpCount[stick+1][n-1];
//count += b * y;
dp3[stick] = b * rest;
}
}
int[] pdpt = new int[n];
for(int stick = 0 ; stick < n; stick++){
int b = 0;
for(int ip = stick ; ip >= 0; ip--){
if(dp[ip][stick] == 1){
b++;
}
}
if(stick+1 < n){
int rest = 0;
for(int k = stick + 1; k < n; k++){
rest += dp3[k];
}
pdpt[stick] = b * rest;
}
}
int ans = 0;
for(int i : pdpt){
ans += i;
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQlTY2FubmVyIHNjID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKCQlTdHJpbmcgcyA9IHNjLm5leHQoKTsKCQkKCQlpbnQgbiA9IHMubGVuZ3RoKCk7CgkJCgkJaW50W11bXSBkcENvdW50ID0gbmV3IGludFtuXVtuXTsKCQlpbnRbXVtdIGRwID0gbmV3IGludFtuXVtuXTsKCQkKCQlmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKCQkJZHBbaV1baV0gPSAxOwoJCQlkcENvdW50W2ldW2ldID0gMTsKCQl9CgkJCgkJZm9yKGludCBpID0gMDsgaSA8IG4tMTsgaSsrKXsKCQkJaWYocy5jaGFyQXQoaSkgPT0gcy5jaGFyQXQoaSsxKSl7CgkJCWRwW2ldW2krMV0gPSAxOwoJCQlkcENvdW50W2ldW2krMV0gPSAzOwoJCQl9ZWxzZXsKCQkJCWRwQ291bnRbaV1baSsxXSA9IDI7CgkJCX0KCQl9CgoJCWZvcihpbnQgbGVuID0gMzsgbGVuIDw9IG47IGxlbisrKXsKCQkJZm9yKGludCBpID0gMCA7IGkgPD0gbiAtIGxlbjsgaSsrKXsKCQkJCWludCBqID0gaSArIGxlbiAtIDE7CgkJCQkKCQkJCWRwQ291bnRbaV1bal0gPSBkcENvdW50W2ldW2otMV0gKyBkcENvdW50W2krMV1bal0gLSBkcENvdW50W2krMV1bai0xXTsKCQkJCQoJCQkJaWYocy5jaGFyQXQoaSkgPT0gcy5jaGFyQXQoaikgJiYgZHBbaSsxXVtqLTFdID09IDEpewoJCQkJCWRwW2ldW2pdID0gMTsKCQkJCQlkcENvdW50W2ldW2pdICs9IDE7IAoJCQkJfQoJCQl9CgkJfQkJCgkJCgkJaW50W10gZHAzID0gbmV3IGludFtuXTsKIAoJCWZvcihpbnQgc3RpY2sgPSAwIDsgc3RpY2sgPCBuOyBzdGljaysrKXsKCQkJaW50IGIgPSAwOwoJCQlmb3IoaW50IGlwID0gc3RpY2sgOyBpcCA+PSAwOyBpcC0tKXsKCQkJCWlmKGRwW2lwXVtzdGlja10gPT0gMSl7CgkJCQkJYisrOwoJCQkJfQoJCQl9CgkJCWlmKHN0aWNrKzEgPCBuKXsKCQkJaW50IHJlc3QgPSBkcENvdW50W3N0aWNrKzFdW24tMV07CgkJCS8vY291bnQgKz0gYiAqIHk7IAoJCQlkcDNbc3RpY2tdID0gYiAqIHJlc3Q7CgkJCX0KCQl9CgkJCgkJaW50W10gcGRwdCA9IG5ldyBpbnRbbl07CgkJIAoJCWZvcihpbnQgc3RpY2sgPSAwIDsgc3RpY2sgPCBuOyBzdGljaysrKXsKCQkJaW50IGIgPSAwOwoJCQlmb3IoaW50IGlwID0gc3RpY2sgOyBpcCA+PSAwOyBpcC0tKXsKCQkJCWlmKGRwW2lwXVtzdGlja10gPT0gMSl7CgkJCQkJYisrOwoJCQkJfQoJCQl9CgkJCQoJCQlpZihzdGljaysxIDwgbil7CgkJCWludCByZXN0ID0gMDsKCQkJZm9yKGludCBrID0gc3RpY2sgKyAxOyBrIDwgbjsgaysrKXsKCQkJCXJlc3QgKz0gZHAzW2tdOwoJCQl9CgkJCXBkcHRbc3RpY2tdID0gYiAqIHJlc3Q7CgkJCX0KCQl9CgkJCgkJaW50IGFucyA9IDA7CgkJZm9yKGludCBpIDogcGRwdCl7CgkJCWFucyArPSBpOwoJCX0KCQlTeXN0ZW0ub3V0LnByaW50KGFucyk7Cgl9Cn0=