/* 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 stick = 0;
int count = 0;
while(stick < n - 1){
int b = 0;
for(int ip = stick ; ip >= 0; ip--){
if(dp[ip][stick] == 1){
b++;
}
}
int y = dpCount[stick+1][n-1];
count += b * y;
stick++;
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQlTY2FubmVyIHNjID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKCQlTdHJpbmcgcyA9IHNjLm5leHQoKTsKCQkKCQlpbnQgbiA9IHMubGVuZ3RoKCk7CgkJCgkJaW50W11bXSBkcENvdW50ID0gbmV3IGludFtuXVtuXTsKCQlpbnRbXVtdIGRwID0gbmV3IGludFtuXVtuXTsKCQkKCQlmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKCQkJZHBbaV1baV0gPSAxOwoJCQlkcENvdW50W2ldW2ldID0gMTsKCQl9CgkJCgkJZm9yKGludCBpID0gMDsgaSA8IG4tMTsgaSsrKXsKCQkJaWYocy5jaGFyQXQoaSkgPT0gcy5jaGFyQXQoaSsxKSl7CgkJCWRwW2ldW2krMV0gPSAxOwoJCQlkcENvdW50W2ldW2krMV0gPSAzOwoJCQl9ZWxzZXsKCQkJCWRwQ291bnRbaV1baSsxXSA9IDI7CgkJCX0KCQl9CgoJCWZvcihpbnQgbGVuID0gMzsgbGVuIDw9IG47IGxlbisrKXsKCQkJZm9yKGludCBpID0gMCA7IGkgPD0gbiAtIGxlbjsgaSsrKXsKCQkJCWludCBqID0gaSArIGxlbiAtIDE7CgkJCQkKCQkJCWRwQ291bnRbaV1bal0gPSBkcENvdW50W2ldW2otMV0gKyBkcENvdW50W2krMV1bal0gLSBkcENvdW50W2krMV1bai0xXTsKCQkJCQoJCQkJaWYocy5jaGFyQXQoaSkgPT0gcy5jaGFyQXQoaikgJiYgZHBbaSsxXVtqLTFdID09IDEpewoJCQkJCWRwW2ldW2pdID0gMTsKCQkJCQlkcENvdW50W2ldW2pdICs9IDE7IAoJCQkJfQoJCQl9CgkJfQkJCgkJCgkJaW50IHN0aWNrID0gMDsKCQlpbnQgY291bnQgPSAwOwoJCQoJCXdoaWxlKHN0aWNrIDwgbiAtIDEpewoJCQlpbnQgYiA9IDA7CgkJCWZvcihpbnQgaXAgPSBzdGljayA7IGlwID49IDA7IGlwLS0pewoJCQkJaWYoZHBbaXBdW3N0aWNrXSA9PSAxKXsKCQkJCQliKys7CgkJCQl9CgkJCX0KCQkJaW50IHkgPSBkcENvdW50W3N0aWNrKzFdW24tMV07CgkJCWNvdW50ICs9IGIgKiB5OyAKCQkJc3RpY2srKzsKCQl9CgkJU3lzdGVtLm91dC5wcmludChjb3VudCk7Cgl9Cn0=