#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int,int> pii;

long long MOD = 1000000000 + 7;

int main(){
  cout << setprecision(10);
  int N,Q; cin >> N >> Q;
  string S; cin >> S;

  vector<int> ans(N, 0);
  for(int i = 1; i < N; i++){
    if(S[i] == 'C' && S[i-1] == 'A'){
      ans[i] = 1;
    }
  }
  for(int i = 1; i < N; i++){
    ans[i] += ans[i-1];
    // cerr << "i: " << i << " ans[i]: " << ans[i] << endl;
  }

  while(Q--){
    int l,r; cin >> l >> r; l--; r--;
    int ret;
    if(l == 0){
      ret = ans[r];
    } else {
      ret = ans[r] - ans[l-1];
      if(S[l] == 'C' && S[l-1] == 'A'){
        ret--;
      }
    }
    cout << ret << endl;
  }



}


#include <bits/stdc++.h>
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define rep(i,n) for (int i=0;i<(int)(n);i++)
#define codefor int test;scanf("%d",&test);while(test--)
#define yn(ans) cout<<(ans?"Yes":"No")<<endl
#define YN(ans) cout<<(ans?"YES":"NO")<<endl
#define umap unordered_map
#define uset unordered_set
using namespace std;
using ll = long long;
const int MOD=1000000007;
//入力系
void scan(int& a){scanf("%d",&a);}
void scan(long long& a){scanf("%lld",&a);}
template<class T> void scan(T& a){cin>>a;}
template<class T> void scan(vector<T>& vec){for(auto&& it:vec)scan(it);}
void in(){}
template <class Head, class... Tail> void in(Head& head, Tail&... tail){scan(head);in(tail...);}
//出力系
void print(const int& a){printf("%d",a);}
void print(const long long& a){printf("%lld",a);}
void print(const double& a){printf("%.15lf",a);}
template<class T> void print(const T& a){cout<<a;}
template<class T> void print(const vector<T>& vec){if(vec.empty())return;print(vec[0]);for(auto it=vec.begin();++it!= vec.end();){putchar(' ');print(*it);}}
void out(){putchar('\n');}
template<class T> void out(const T& t){print(t);putchar('\n');}
template <class Head, class... Tail> void out(const Head& head,const Tail&... tail){print(head);putchar(' ');out(tail...);}
//デバッグ系
template<class T> void dprint(const T& a){cerr<<a;}
template<class T> void dprint(const vector<T>& vec){if(vec.empty())return;cerr<<vec[0];for(auto it=vec.begin();++it!= vec.end();){cerr<<" "<<*it;}}
void debug(){cerr<<endl;}
template<class T> void debug(const T& t){dprint(t);cerr<<endl;}
template <class Head, class... Tail> void debug(const Head& head, const Tail&... tail){dprint(head);cerr<<" ";debug(tail...);}

int main(){
    int  n,q;
    ll ans=0;
    string s;
    in(n,q,s);
    vector<ll> vec(n);
    vec[0]=0;
    for(int i=1;i<n;i++){
        if(s[i-1]=='A'&&s[i]=='C'){
            ans++;
        }
        vec[i]=ans;
    } 
    int l,r;
    rep(i,q){
        in(l,r);
        out(vec[r-1]-vec[l-1]);
    }
}