function Main(input) {
    // 1行目がinput[0], 2行目がinput[1], …に入る
	var array = input.split('\n');
    //console.log(array.length);
  	var NQ = array[0].split(' ');
  	var text = array[1].split(' ');
  	var font = text[0];
  	var length_arr = [];
  	String(font).split('');
  	if(String(text[0]).indexOf('AC') != -1) {
      
		for (var i = 0; i < font.length; i++) {
          one = font[i];
          if(one == 'A'){
            flag = true;
          }
          else if(one == 'C' && flag){
             length_arr.push(i);
          }
          else{
            flag = false;
          }
		}
	    //console.log(length_arr);
      
      for(var i = 2; i < array.length; i ++){
          var mondai = array[i].split(' ');
          minN = seach(length_arr,mondai[0] - 1);
          maxN = seach(length_arr,mondai[1] - 1);
          console.log(maxN - minN);
      }
	}
    else {
      console.log(0);
    }
}

function seach(a, searchValue){
  var index = -1;
  //調べる左端を表す添字(index)
  var left = 0;

  //調べる右端を表す添字(index)
  var right = a.length-1;
  while(left <= right){

    //左右の真ん中を表す添字(index)
    middle =Math.floor((left +right)/2);

    //真ん中の値と探す値を比較する
    if(a[middle]==searchValue){
        //一致した場合、変数に入れて処理終了
        index = middle;
        break;
    }else if(a[middle]<searchValue){
        //探す値より小さい場合、左側にはもっと小さい値しかないので左端の値を真ん中の値の右に移動する
        left = middle +1;
    }else{
        //探す値より大きい場合、右側にはもっと大きい値しかないので右端の値を真ん中の値の左に移動する
        right = middle -1;
    }
}
  if(index == -1){
    index = right;
  }
//  console.log('index',index);
  return index;
}

    
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));