function binary_sort(array,search_value){ 
  const array_len = array.length;
  
  var left_index = 0;
  var right_index = array_len - 1;
  var middle_index = 0;
  
  var count = 0; // 計算量
  var index = 0;

  // 最小値より小さい場合
  if (search_value <= array[0]) {
    return 0;
    
  // 最大値の場合
  if (search_value == array[array_len-1]) {
    return array_len -1;
  }
    
  // 最大値より大きい場合
  } else if (search_value > array[array_len-1]) {
    return array_len;

  // 最小値と最大値の間にある場合
  } else {
    while (left_index <= right_index) {
      count++;
      middle_index = Math.floor( (left_index + right_index) / 2 );

      // どんぴしゃの時
      if (search_value == array[middle_index]) {
        return middle_index;

      // 真ん中より小さい場合 
      } else if (search_value < array[middle_index]) {
        right_index = middle_index;

      // 真ん中より大きい場合
      } else {
        left_index = middle_index;
      }

      // 最後にこれ以上探索する必要があるか確認
      if ( (right_index - left_index) <= 1) {
        index = right_index;
        return index;
      }
    }
  }
}

function Main(input){
  const input_text = input.split('\n');
  const N_Q = input_text[0].split(' ');
  const N = N_Q[0];
  const Q = N_Q[1];
  const S = input_text[1];
  var count = 0;
  var AC_Array = [];
  
  // Sに含まれるACのAのindex位置を配列化
  for (k=0; k<N-1; k++) {
    if(S[k] === 'A' && S[k+1] === 'C'){
      AC_Array.push(k);
    }
  }
  
  const AC_Array_len = AC_Array.length;
  
  for (i=0; i<Q; i++) {
    var l_r = input_text[i+2].split(' ');
    var l_index = l_r[0] - 1; // start range
    var r_index = l_r[1] - 1; // end range
    var result = binary_sort(AC_Array,r_index) - binary_sort(AC_Array,l_index)
    console.log(result);
    count=0;
  }
}
 
Main(require("fs").readFileSync("/dev/stdin","utf-8"));