using System;
using System.Collections.Generic;
using System.Linq;
namespace C
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] In = Console.ReadLine().Split(' ').Select(x => int.Parse(x)).ToArray();
            int n = In[0];
            int q = In[1];
            string s = Console.ReadLine();
            var A = new int[n];
            for (int i = 0; i < n - 1; i++)
            {
                if (s[i] == 'A' && s[i + 1] == 'C')
                {
                    //ACがあるときAの場所でカウントを増やす
                    A[i] = 1;
                }
            }
            var C = new int[n];
            C[0] = A[0];
            for (int i = 1; i < n; i++)
            {
                C[i] = C[i - 1] + A[i];
            }
            var que = new Queue<int>();
            for (int i = 0; i < q; i++)
            {
                string[] In2 = Console.ReadLine().Split(' ');
                int l = int.Parse(In2[0]) - 1;
                int r = int.Parse(In2[1]) - 1;
                int cnt = -1;
                if (l == 0) cnt = C[r - 1];
                else cnt = C[r-1] - C[l-1];
                que.Enqueue(cnt);
            }
            for (int i = 0; i < q; i++)
            {
                Console.WriteLine(que.Dequeue());
            }

        }
    }
}
//WA
//namespace C
//{
//    class Program
//    {
//        static void Main(string[] args)
//        {
//            int[] In = Console.ReadLine().Split(' ').Select(x => int.Parse(x)).ToArray();
//            int n = In[0];
//            int q = In[1];
//            string s = Console.ReadLine();
//            var A = new int[n];
//            for (int i = 0; i < n-1; i++)
//            {
//                if (s[i] == 'A' && s[i+1] == 'C')
//                {
//                    A[i] = 1;
//                }
//            }
//            var C = new int[n];
//            C[0] = A[0];
//            for (int i = 1; i < n; i ++){
//                C[i] = C[i - 1] + A[i];
//            }
//            var que = new Queue<int>();
//            for (int i = 0; i < q; i++)
//            {
//                string[] In2 = Console.ReadLine().Split(' ');
//                int l = int.Parse(In2[0]) - 1;
//                int r = int.Parse(In2[1]) - 1;
//                int cnt = 0;
//                if (l == 0) cnt = C[r];
//                else cnt = C[r] - C[l-1];
//                if (s[r] == 'A') cnt--;
//                que.Enqueue(cnt);
//            }
//            for(int i = 0; i < q; i++)
//            {
//                Console.WriteLine(que.Dequeue());
//            }

//        }
//    }
//}
//TLE
//namespace C
//{
//    class Program
//    {
//        static void Main(string[] args)
//        {
//            int[] In = Console.ReadLine().Split(' ').Select(x => int.Parse(x)).ToArray();
//            int n = In[0];
//            int q = In[1];
//            string s = Console.ReadLine();
//            int[] A = new int[n];
//            int[] C = new int[n];
//            for (int i=0; i < n; i++){
//                if (s[i] == 'A') A[i]=1;
//                if (s[i] == 'C') C[i]=1;
//            }
//            int[,] Array = new int[q, 2];
//            for (int i=0; i < q; i++)
//            {
//                string[] In2 = Console.ReadLine().Split(' ');
//                Array[i,0]= int.Parse(In2[0])-1;
//                Array[i,1]= int.Parse(In2[1])-1;
//            }
//            for(int i = 0; i < q; i++)
//            {
//                int cnt = 0;
//                int l= Array[i, 0];
//                int r= Array[i, 1];
//                for (int j=l; j< r; j++)
//                {
//                    if (j == n - 1) break;
//                    if (A[j] == 1 && C[j + 1] == 1) cnt++;
//                }
//                Console.WriteLine(cnt);
//            }
//        }
//    }
//}


Measured memory_bytes: 42996