#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef vector<ll> vec;
typedef vector<vector<ll>> vec2;
typedef pair<ll,ll> pair1;
typedef pair<string,ll> pair2;
typedef pair<ll,string> pair3;
typedef pair<string,string> pair4;
#define fl(i,a,b) for(i=a;i<b;i++)
#define rfl(i,a,b) for(i=b-1;i>=a;i--)
#define f first
#define s second
int a[100005];
set<ll> seg[4*100005],final;
void build(ll ind,ll low,ll high)
{
if(low==high){
if(a[low]%2==0)
seg[ind].insert(a[low]);
return;
}
ll mid=(low+high)>>1;
build(2*ind+1,low,mid);
build(2*ind+2,mid+1,high);
seg[ind].insert(seg[2*ind+1].begin(),seg[2*ind+1].end());
seg[ind].insert(seg[2*ind+2].begin(),seg[2*ind+2].end());
}
void query(ll ind,ll low,ll high,ll l,ll r)
{
if(low>=l&&high<=r){
final.insert(seg[ind].begin(),seg[ind].end());
return;
}
if(high<l||low>r) return;
ll mid=(low+high)>>1;
query(2*ind+1,low,mid,l,r);
query(2*ind+2,mid+1,high,l,r);
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
string s;cin>>s;
ll n=s.length(),i;
fl(i,0,n) a[i]=s[i]-96;;
build(0,0,n-1);
ll q;cin>>q;
while(q--)
{
ll l,r; cin>>l>>r;
query(0,0,n-1,l-1,r-1);
cout<<final.size()<<"\n";
final.clear();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7IAp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOwp0eXBlZGVmIHZlY3RvcjxsbD4gdmVjOyAKdHlwZWRlZiB2ZWN0b3I8dmVjdG9yPGxsPj4gdmVjMjsKdHlwZWRlZiBwYWlyPGxsLGxsPiBwYWlyMTsKdHlwZWRlZiBwYWlyPHN0cmluZyxsbD4gcGFpcjI7CnR5cGVkZWYgcGFpcjxsbCxzdHJpbmc+IHBhaXIzOwp0eXBlZGVmIHBhaXI8c3RyaW5nLHN0cmluZz4gcGFpcjQ7CiNkZWZpbmUgZmwoaSxhLGIpIGZvcihpPWE7aTxiO2krKykKI2RlZmluZSByZmwoaSxhLGIpIGZvcihpPWItMTtpPj1hO2ktLSkKI2RlZmluZSBmIGZpcnN0CiNkZWZpbmUgcyBzZWNvbmQKCmludCBhWzEwMDAwNV07CgpzZXQ8bGw+IHNlZ1s0KjEwMDAwNV0sZmluYWw7Cgp2b2lkIGJ1aWxkKGxsIGluZCxsbCBsb3csbGwgaGlnaCkKewogICAgaWYobG93PT1oaWdoKXsKICAgICAgICBpZihhW2xvd10lMj09MCkKICAgICAgICBzZWdbaW5kXS5pbnNlcnQoYVtsb3ddKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICAKICAgIGxsIG1pZD0obG93K2hpZ2gpPj4xOwogICAgCiAgICBidWlsZCgyKmluZCsxLGxvdyxtaWQpOwogICAgYnVpbGQoMippbmQrMixtaWQrMSxoaWdoKTsKICAgIAogICAgc2VnW2luZF0uaW5zZXJ0KHNlZ1syKmluZCsxXS5iZWdpbigpLHNlZ1syKmluZCsxXS5lbmQoKSk7CiAgICBzZWdbaW5kXS5pbnNlcnQoc2VnWzIqaW5kKzJdLmJlZ2luKCksc2VnWzIqaW5kKzJdLmVuZCgpKTsKfQoKdm9pZCBxdWVyeShsbCBpbmQsbGwgbG93LGxsIGhpZ2gsbGwgbCxsbCByKQp7CiAgICBpZihsb3c+PWwmJmhpZ2g8PXIpewogICAgICAgIGZpbmFsLmluc2VydChzZWdbaW5kXS5iZWdpbigpLHNlZ1tpbmRdLmVuZCgpKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICAKICAgIGlmKGhpZ2g8bHx8bG93PnIpIHJldHVybjsKICAgIGxsIG1pZD0obG93K2hpZ2gpPj4xOwogICAgCiAgICBxdWVyeSgyKmluZCsxLGxvdyxtaWQsbCxyKTsKICAgIAogICAgcXVlcnkoMippbmQrMixtaWQrMSxoaWdoLGwscik7Cn0KCmludCBtYWluKCkgCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyAKICAgIGNpbi50aWUoTlVMTCk7CiAgICAKICAgIHN0cmluZyBzO2Npbj4+czsKICAgIAogICAgbGwgbj1zLmxlbmd0aCgpLGk7CiAgICBmbChpLDAsbikgYVtpXT1zW2ldLTk2OzsKICAgIAogICAgYnVpbGQoMCwwLG4tMSk7CiAgICAKICAgIGxsIHE7Y2luPj5xOwogICAgCiAgICB3aGlsZShxLS0pCiAgICB7CiAgICAgICAgbGwgbCxyOyBjaW4+Pmw+PnI7CiAgICAgICAgCiAgICAgICAgcXVlcnkoMCwwLG4tMSxsLTEsci0xKTsKICAgICAgICAKICAgICAgICBjb3V0PDxmaW5hbC5zaXplKCk8PCJcbiI7CiAgICAgICAgCiAgICAgICAgZmluYWwuY2xlYXIoKTsKICAgIH0KICAgIHJldHVybiAwOwp9