#include using namespace std; using int64 = long long; string S; int g[5000][5000]; int64 dp[5][5001]; bool is_palindrome(int l, int r) { if(~g[l][r]) return g[l][r]; if(l >= r) return true; if(S[l] != S[r]) return false; return g[l][r] = is_palindrome(l + 1, r - 1); } int main() { cin >> S; memset(g, -1, sizeof(g)); int N = (int) S.size(); dp[0][0] = 1; for(int i = 1; i <= 4; i++) { for(int j = 0; j < N; j++) { for(int k = j + 1; k <= N; k++) { if(i == 3 || is_palindrome(j, k - 1)) { dp[i][k] += dp[i - 1][j]; } } } } cout << dp[4][N] << endl; }