#include <bits/stdc++.h>
using namespace std;
char ch[5005];
int n;
bool can[5005][5005];
int dp[5005][5005];
int s[5005];
int main() {
  cin >> ch;
  n = strlen(ch);
  for (int i = 0; i < n; i++) {
    can[i][i] = 1;
    for (int j = 1; j <= i && i + j < n; j++)
      can[i - j][i + j] = can[i - j + 1][i + j - 1] && (ch[i - j] == ch[i + j]);
    if (i < n - 1) {
      can[i][i + 1] = (ch[i] == ch[i + 1]);
      for (int j = 1; j <= i && i + j + 1 < n; j++)
        can[i - j][i + j + 1] =
            can[i - j + 1][i + j] && (ch[i - j] == ch[i + j + 1]);
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = i; j < n; j++) s[i] += can[i][j];
  }
  for (int i = n - 1; i >= 0; i--) {
    dp[i][i] = 1;
    for (int j = i - 1; j >= 0; j--) {
      dp[j][i] = dp[j + 1][i] + s[j];
      s[j] -= can[j][i];
    }
  }
  int m;
  cin >> m;
  while (m--) {
    int a, b;
    cin >> a >> b;
    cout << dp[a - 1][b - 1] << endl;
  }
}
