#include <bits/stdc++.h>
using namespace std;
char s[5555];
bool ispal[5555][5555];
int dp[5555][5555];
int q, n;
int main() {
  scanf("%s", s);
  scanf("%d", &q);
  n = strlen(s);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j + i < n; j++) {
      if (!i)
        ispal[j][j + i] = true;
      else if (i == 1)
        ispal[j][j + i] = (s[i + j] == s[j]);
      else if (s[j + i] == s[j])
        ispal[j][j + i] = ispal[j + 1][j + i - 1];
      else
        ispal[j][j + i] = 0;
    }
  }
  for (int i = 0; i < n; i++)
    for (int j = 0; j + i < n; j++) {
      if (!i) {
        dp[j][i + j] = 1;
        continue;
      }
      dp[j][j + i] = dp[j][j + i - 1] + dp[j + 1][j + i];
      if (i > 1) dp[j][j + i] -= dp[j + 1][i + j - 1];
      dp[j][i + j] += ispal[j][i + j];
    }
  while (q--) {
    int l, r;
    scanf("%d%d", &l, &r);
    printf("%d\n", dp[l - 1][r - 1]);
  }
  return 0;
}
