#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (long long i = 0; i < (long long)(n); i++)
typedef long long ll;
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }
const long long INF = 1LL << 60;
const int inf = 1001001001;
 
int main(){

    ll n, q;
    string s;
    cin >> n >> q >> s;
    vector<ll> dp(n, 0);
    for(ll i = 0; i < n-1; i++){
        if(s[i] == 'A' && s[i+1] == 'C'){
            dp[i+1] = (dp[i] + 1);
        }
        else{
            dp[i+1] = dp[i];
        }
    }

    while(q){
        ll l,r;
        cin >> l >> r;
        cout << dp[r-1] - dp[l-1] << endl;
        q--;
    }
    
 
}
#include<iostream>
#include<iomanip>
#include<string>
#include<algorithm>
#include<vector>
#include<utility>
#include<tuple>
#include<map>
#include<queue>
#include<stack>
#include<deque>
#include<bitset>
#include<math.h>
using namespace std;
using ll = int64_t;
using Graph = vector<vector<int> >;
const ll M = 1000000007;

int main(){
    int n,q;
    cin >> n >> q;
    string s;
    cin >> s;
    
    vector<int> cnt;
    cnt.push_back(0);
    int tmp=0;
    for(int i=1;i<n;i++){
        if(s.at(i-1)=='A' && s.at(i)=='C') {
            tmp++;
            cnt.push_back(tmp);
        }else{
            cnt.push_back(tmp);
        }
    }

    for(int i=0;i<q;i++){
        int r,l;
        cin >> r >> l;

        int ans=cnt.at(l-1)-cnt.at(r-1);
        cout << ans << endl;
    }
}