import math

import fractions

import bisect

import collections

import itertools

import heapq

import string

import sys

import copy

from collections import deque

sys.setrecursionlimit(10**7)

MOD = 10**9+7

def gcd(a,b):return fractions.gcd(a,b) #最大公約数

def lcm(a,b):return (a*b) // fractions.gcd(a,b) #最小公倍数

def iin(): return int(eval(input())) #整数読み込み

def ifn(): return float(eval(input())) #浮動小数点読み込み

def isn(): return input().split() #文字列読み込み

def imn(): return list(map(int, input().split())) #整数map取得

def fmn(): return list(map(float, input().split())) #浮動小数点map取得

def iln(): return list(map(int, input().split())) #整数リスト取得

def iln_s(): return sorted(iln()) # 昇順の整数リスト取得

def iln_r(): return sorted(iln(), reverse=True) # 降順の整数リスト取得

def fln(): return list(map(float, input().split())) # 浮動小数点リスト取得

def join(l, s=''): return s.join(l) #リストを文字列に変換

def perm(l, n): return itertools.permutations(l, n) # 順列取得

def perm_count(n, r): return math.factorial(n) // math.factorial(n-r) # 順列の総数

def comb(l, n): return itertools.combinations(l, n) # 組み合わせ取得

def comb_count(n, r): return math.factorial(n) // (math.factorial(n-r) * math.factorial(r)) #組み合わせの総数

def two_distance(a, b, c, d): return ((c-a)**2 + (d-b)**2)**.5 # 2点間の距離

def m_add(a,b): return (a+b) % MOD



N,Q = imn()

S = eval(input())

lr = [iln() for _ in range(Q)]



c = [0 for _ in range(N+1)]



for i in range(N):

    c[i+1] = c[i]

    if i+1 < N and S[i] == 'A' and S[i+1] == 'C': c[i+1] += 1



for i in range(Q):

    left = lr[i][0]-1

    right = lr[i][1]-1

    print((c[right]-c[left]))

# python3.4.2用

import math

import fractions

import bisect

import collections

import itertools

import heapq

import string

import sys

import copy

from decimal import *

from collections import deque

sys.setrecursionlimit(10**7)

MOD = 10**9+7

INF = float('inf') #無限大

def gcd(a,b):return fractions.gcd(a,b) #最大公約数

def lcm(a,b):return (a*b) // fractions.gcd(a,b) #最小公倍数

def iin(): return int(sys.stdin.readline()) #整数読み込み

def ifn(): return float(sys.stdin.readline()) #浮動小数点読み込み

def isn(): return sys.stdin.readline().split() #文字列読み込み

def imn(): return map(int, sys.stdin.readline().split()) #整数map取得

def imnn(): return map(lambda x:int(x)-1, sys.stdin.readline().split()) #整数-1map取得

def fmn(): return map(float, sys.stdin.readline().split()) #浮動小数点map取得

def iln(): return list(map(int, sys.stdin.readline().split())) #整数リスト取得

def iln_s(): return sorted(iln()) # 昇順の整数リスト取得

def iln_r(): return sorted(iln(), reverse=True) # 降順の整数リスト取得

def fln(): return list(map(float, sys.stdin.readline().split())) # 浮動小数点リスト取得

def join(l, s=''): return s.join(l) #リストを文字列に変換

def perm(l, n): return itertools.permutations(l, n) # 順列取得

def perm_count(n, r): return math.factorial(n) // math.factorial(n-r) # 順列の総数

def comb(l, n): return itertools.combinations(l, n) # 組み合わせ取得

def comb_count(n, r): return math.factorial(n) // (math.factorial(n-r) * math.factorial(r)) #組み合わせの総数

def two_distance(a, b, c, d): return ((c-a)**2 + (d-b)**2)**.5 # 2点間の距離

def m_add(a,b): return (a+b) % MOD

def lprint(l): print(*l, sep='\n')



N,Q = imn()

S = input()

L = []

R = []

for _ in range(Q):

    l,r = imn()

    L.append(l-1)

    R.append(r-1)



s = [0 for _ in range(N+1)]

for i in range(1, N+1):

    s[i] = s[i-1]

    if S[i-1:i+1] == 'AC':

       s[i] += 1



for i in range(Q):

    print(s[R[i]]-s[L[i]])

import math
import fractions
import bisect
import collections
import itertools
import heapq
import string
import sys
import copy
from collections import deque

sys.setrecursionlimit(10**7)
MOD = 10**9 + 7


def gcd(a, b):
    return fractions.gcd(a, b)  # 最大公約数


def lcm(a, b):
    return (a * b) // fractions.gcd(a, b)  # 最小公倍数


def iin():
    return int(eval(input()))  # 整数読み込み


def ifn():
    return float(eval(input()))  # 浮動小数点読み込み


def isn():
    return input().split()  # 文字列読み込み


def imn():
    return list(map(int, input().split()))  # 整数map取得


def fmn():
    return list(map(float, input().split()))  # 浮動小数点map取得


def iln():
    return list(map(int, input().split()))  # 整数リスト取得


def iln_s():
    return sorted(iln())  # 昇順の整数リスト取得


def iln_r():
    return sorted(iln(), reverse=True)  # 降順の整数リスト取得


def fln():
    return list(map(float, input().split()))  # 浮動小数点リスト取得


def join(l, s=""):
    return s.join(l)  # リストを文字列に変換


def perm(l, n):
    return itertools.permutations(l, n)  # 順列取得


def perm_count(n, r):
    return math.factorial(n) // math.factorial(n - r)  # 順列の総数


def comb(l, n):
    return itertools.combinations(l, n)  # 組み合わせ取得


def comb_count(n, r):
    return math.factorial(n) // (math.factorial(n - r) * math.factorial(r))  # 組み合わせの総数


def two_distance(a, b, c, d):
    return ((c - a) ** 2 + (d - b) ** 2) ** 0.5  # 2点間の距離


def m_add(a, b):
    return (a + b) % MOD


N, Q = imn()
S = eval(input())
lr = [iln() for _ in range(Q)]
c = [0 for _ in range(N + 1)]
for i in range(N):
    c[i + 1] = c[i]
    if i + 1 < N and S[i] == "A" and S[i + 1] == "C":
        c[i + 1] += 1
for i in range(Q):
    left = lr[i][0] - 1
    right = lr[i][1] - 1
    print((c[right] - c[left]))

# python3.4.2用
import math
import fractions
import bisect
import collections
import itertools
import heapq
import string
import sys
import copy
from decimal import *
from collections import deque

sys.setrecursionlimit(10**7)
MOD = 10**9 + 7
INF = float("inf")  # 無限大


def gcd(a, b):
    return fractions.gcd(a, b)  # 最大公約数


def lcm(a, b):
    return (a * b) // fractions.gcd(a, b)  # 最小公倍数


def iin():
    return int(sys.stdin.readline())  # 整数読み込み


def ifn():
    return float(sys.stdin.readline())  # 浮動小数点読み込み


def isn():
    return sys.stdin.readline().split()  # 文字列読み込み


def imn():
    return map(int, sys.stdin.readline().split())  # 整数map取得


def imnn():
    return map(lambda x: int(x) - 1, sys.stdin.readline().split())  # 整数-1map取得


def fmn():
    return map(float, sys.stdin.readline().split())  # 浮動小数点map取得


def iln():
    return list(map(int, sys.stdin.readline().split()))  # 整数リスト取得


def iln_s():
    return sorted(iln())  # 昇順の整数リスト取得


def iln_r():
    return sorted(iln(), reverse=True)  # 降順の整数リスト取得


def fln():
    return list(map(float, sys.stdin.readline().split()))  # 浮動小数点リスト取得


def join(l, s=""):
    return s.join(l)  # リストを文字列に変換


def perm(l, n):
    return itertools.permutations(l, n)  # 順列取得


def perm_count(n, r):
    return math.factorial(n) // math.factorial(n - r)  # 順列の総数


def comb(l, n):
    return itertools.combinations(l, n)  # 組み合わせ取得


def comb_count(n, r):
    return math.factorial(n) // (math.factorial(n - r) * math.factorial(r))  # 組み合わせの総数


def two_distance(a, b, c, d):
    return ((c - a) ** 2 + (d - b) ** 2) ** 0.5  # 2点間の距離


def m_add(a, b):
    return (a + b) % MOD


def lprint(l):
    print(*l, sep="\n")


N, Q = imn()
S = input()
L = []
R = []
for _ in range(Q):
    l, r = imn()
    L.append(l - 1)
    R.append(r - 1)
s = [0 for _ in range(N + 1)]
for i in range(1, N + 1):
    s[i] = s[i - 1]
    if S[i - 1 : i + 1] == "AC":
        s[i] += 1
for i in range(Q):
    print(s[R[i]] - s[L[i]])

+# python3.4.2用 +from decimal import * +INF = float("inf")  # 無限大 -    return int(eval(input()))  # 整数読み込み +    return int(sys.stdin.readline())  # 整数読み込み -    return float(eval(input()))  # 浮動小数点読み込み +    return float(sys.stdin.readline())  # 浮動小数点読み込み -    return input().split()  # 文字列読み込み +    return sys.stdin.readline().split()  # 文字列読み込み -    return list(map(int, input().split()))  # 整数map取得 +    return map(int, sys.stdin.readline().split())  # 整数map取得 + + +def imnn(): +    return map(lambda x: int(x) - 1, sys.stdin.readline().split())  # 整数-1map取得 -    return list(map(float, input().split()))  # 浮動小数点map取得 +    return map(float, sys.stdin.readline().split())  # 浮動小数点map取得 -    return list(map(int, input().split()))  # 整数リスト取得 +    return list(map(int, sys.stdin.readline().split()))  # 整数リスト取得 -    return list(map(float, input().split()))  # 浮動小数点リスト取得 +    return list(map(float, sys.stdin.readline().split()))  # 浮動小数点リスト取得 +def lprint(l): +    print(*l, sep="\n") + + -S = eval(input()) -lr = [iln() for _ in range(Q)] -c = [0 for _ in range(N + 1)] -for i in range(N): -    c[i + 1] = c[i] -    if i + 1 < N and S[i] == "A" and S[i + 1] == "C": -        c[i + 1] += 1 +S = input() +L = [] +R = [] +for _ in range(Q): +    l, r = imn() +    L.append(l - 1) +    R.append(r - 1) +s = [0 for _ in range(N + 1)] +for i in range(1, N + 1): +    s[i] = s[i - 1] +    if S[i - 1 : i + 1] == "AC": +        s[i] += 1 -    left = lr[i][0] - 1 -    right = lr[i][1] - 1 -    print((c[right] - c[left])) +    print(s[R[i]] - s[L[i]])