#include <bits/stdc++.h>   using namespace std;   char s[5010];   int mat[5010][5010];   int dp[5010][5010];   int n;   void findAllPalindromes() {     for (int i = 0; i < n; i++) {       for (int j = 0; i - j >= 0 && i + j < n; j++) {         if (s[i - j] == s[i + j])           mat[i - j][i + j] = 1;         else           break;       }     }     for (int i = 0; i < n; i++) {       for (int j = 0; i - j >= 0 && i + j + 1 < n; j++) {         if (s[i - j] == s[i + j + 1])           mat[i - j][i + j + 1] = 1;         else           break;       }     }   }   void filldp() {     for (int i = 1; i <= n; i++)       for (int j = 1; j <= n; j++) {         dp[i][j] =             dp[i][j - 1] + dp[i - 1][j] - dp[i - 1][j - 1] + mat[i - 1][j - 1];       }   }   inline int sum(int l, int r) {     int ans = dp[n][r];     if (l > 0) ans -= dp[l - 1][r];     return ans;   }   int main() {     scanf(  %s , s);     n = strlen(s);     findAllPalindromes();     filldp();     int q;     scanf(  %d , &q);     while (q--) {       int l, r;       scanf( %d %d , &l, &r);       printf( %d n , sum(l, r));     }     return 0;   }   