#include <bits/stdc++.h>
using namespace std;
const double EPS = (1e-10);
bool EQ(double a, double b) { return abs((a) - (b)) < EPS; }
void fast_stream() { std::ios_base::sync_with_stdio(0); }
string str;
bool isPalin[2001][2001];
int finPalin[2001];
int ruiseki[2001];
void solve() {
  cin >> str;
  int n = str.size();
  for (int i = 0; i < n; i++) {
    for (int j = 0;; j++) {
      if (i - j < 0 || i + j >= n) break;
      if (str[i - j] == str[i + j])
        isPalin[i - j][i + j] = true;
      else
        break;
    }
  }
  for (int i = 0; i < n - 1; i++) {
    for (int j = 0;; j++) {
      if (i - j < 0 || i + j + 1 >= n) break;
      if (str[i - j] == str[i + j + 1])
        isPalin[i - j][i + j + 1] = true;
      else
        break;
    }
  }
  for (int i = 0; i < 2001; i++)
    for (int j = 0; j < 2001; j++)
      if (isPalin[i][j]) finPalin[j]++;
  for (int i = n - 1; i >= 0; i--) {
    ruiseki[i] = ruiseki[i + 1];
    for (int j = i; j < n; j++)
      if (isPalin[i][j]) ruiseki[i]++;
  }
  long long res = 0;
  for (int i = 0; i < n - 1; i++) {
    int a = finPalin[i] * ruiseki[i + 1];
    res += a;
  }
  cout << res << endl;
}
int main() {
  solve();
  return 0;
}
