#include <bits/stdc++.h>   using namespace std;   void setIO(string str, bool dbg) {     ios_base::sync_with_stdio(0);     cin.tie(nullptr);     cout.tie(nullptr);     if (!dbg) {       freopen((str +  .in ).c_str(),  r , stdin);       freopen((str +  .out ).c_str(),  w , stdout);     }   }   const int MAX = 5e3 + 5;   const int LEN = 2e3 + 5;   const int LVL = 2e1 + 0;   const long long int MOD = 1e9 + 7;   const long long int INF = 2e9;   int xyz = 1;   int n, q;   int pld[MAX][MAX];   int dps[MAX][MAX];   void fnc() {     string str;     cin >> str;     n = str.length();     for (int i = 0; i < n; i++) pld[i][i] = 1;     for (int i = 1; i < n; i++) {       for (int j = 0; j + i < n; j++) {         int l = j;         int r = i + j;         pld[l][r] = str[l] == str[r] ? pld[l + 1][r - 1] || r - l == 1 : 0;       }     }     for (int i = 0; i < n; i++) {       for (int j = 0; j + i < n; j++) {         int l = j;         int r = i + j;         dps[l][r] = pld[l][r] + dps[l + 1][r] + dps[l][r - 1] - dps[l + 1][r - 1];       }     }     cin >> q;     for (int i = 0; i < q; i++) {       int l;       int r;       cin >> l >> r;       cout << dps[l - 1][r - 1] <<   n ;     }   }   int main() {     setIO(  , 1);     while (xyz--) fnc();     return 0;   }   