#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m,i,j,a[100010],v1,v2,res,f,flags,starti;
pair<char,ll>c[100010];
string sd;
void vopros(ll v1,ll v2){
    flags=0;
    f=0;
    for(ll i=v1;i<=v2;i++){
    if(flags==0){
        f++;
        flags=1;
        starti=i;
    }
    else if(c[i+1].first==c[i].first || c[i+1].first-1==c[i].first && flags==1)continue;
    else if(c[i+1].first!=c[i].first && c[i+1].first-1!=c[i].first && flags==1){
        flags=0;
        c[starti].second=i+1;
    }
    }
    if(c[v2].first!=c[v2-1].first&&c[v2].first-1!=c[v2-1].first){
        c[v2].second=v2+1;
    }
}
ll TTTT(ll v1,ll v2){
    ll res=0;
    ll i=v1;
    ll flags=0;
    ll f=0;
    ll flag1=0;
    while(c[i].second==0 && i<=v2){
        if(flag1==0){
            i=v1-1;
        flag1=1;
        }
             i++;
            if(c[i].second>0)break;
        if(flags==0){
        f++;
        flags=1;
    }
    else if(c[i-1].first!=c[i].first && c[i-1].first+1!=c[i].first && flags==1){
        flags=0;
    }
    if(c[i+1].second>0)break;
    i++;
    }
    res+=f;
    f=0;
    while(i<=v2){
        if(c[i].second>0){
        i=c[i].second;
        f++;
        }
    }
    res+=f;
    return res;
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
        cin>>sd;
       for(i=0;i<=sd.length();i++){
           c[i+1].first=sd[i];
       }
       cin>>n;
       vopros(1,sd.length());
       //for(i=0;i<=sd.length();i++)cout<<c[i].first<<c[i].second<<endl;
       for(i=1;i<=n;i++){
           cin>>v1>>v2;
       res=TTTT(v1,v2);
       cout<<res<<endl;
       }
    return 0;
}
