import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		// シミュレーション
		// 累積和の数え上げ
		Scanner sc = new Scanner(System.in);
		int N = Integer.parseInt(sc.next());
		int Q = Integer.parseInt(sc.next());
		String S = sc.next();

		// query
		int[][] lr = new int[Q][2];
		for (int i = 0; i < Q; i++) {
			lr[i][0] = Integer.parseInt(sc.next());
			lr[i][1] = Integer.parseInt(sc.next());
		}

		solve(N, Q, S, lr);
	}

	static void solve(int n, int q, String s, int[][] lr) {
		int[] t = new int[n];
		for (int i = 0; i < n - 1; i++) {
			int add = s.substring(i, i + 2).equals("AC") ? 1 : 0;
			// 累積和でl-rの区間の出現数をカウントできるようにする
			t[i + 1] = t[i] + add;
		}

		for (int i = 0; i < q; i++) {
			int l = lr[i][0];
			int r = lr[i][1];

			System.out.println(t[r - 1] - t[l - 1]);
		}
	}
} import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) {
		// シミュレーション
		// 累積和の数え上げ
		Scanner sc = new Scanner(System.in);
		int N = Integer.parseInt(sc.next());
		int Q = Integer.parseInt(sc.next());
		String S = sc.next();

		// query
		int[][] lr = new int[Q][2];
		for (int i = 0; i < Q; i++) {
			lr[i][0] = Integer.parseInt(sc.next());
			lr[i][1] = Integer.parseInt(sc.next());
		}

		solve(N, Q, S, lr);
	}

	static void solve(int n, int q, String s, int[][] lr) {
		int[] t = new int[n];
		for (int i = 0; i < n - 1; i++) {
			int add = s.substring(i, i + 2).equals("AC") ? 1 : 0;
			// 累積和でl-rの区間の出現数をカウントできるようにする
			t[i + 1] = t[i] + add;
		}

		for (int i = 0; i < q; i++) {
			int l = lr[i][0];
			int r = lr[i][1];

			System.out.println(t[r - 1] - t[l - 1]);
		}
	}
} Main public static void main(String[] args) {
		// シミュレーション
		// 累積和の数え上げ
		Scanner sc = new Scanner(System.in);
		int N = Integer.parseInt(sc.next());
		int Q = Integer.parseInt(sc.next());
		String S = sc.next();

		// query
		int[][] lr = new int[Q][2];
		for (int i = 0; i < Q; i++) {
			lr[i][0] = Integer.parseInt(sc.next());
			lr[i][1] = Integer.parseInt(sc.next());
		}

		solve(N, Q, S, lr);
	} main {
		// シミュレーション
		// 累積和の数え上げ
		Scanner sc = new Scanner(System.in);
		int N = Integer.parseInt(sc.next());
		int Q = Integer.parseInt(sc.next());
		String S = sc.next();

		// query
		int[][] lr = new int[Q][2];
		for (int i = 0; i < Q; i++) {
			lr[i][0] = Integer.parseInt(sc.next());
			lr[i][1] = Integer.parseInt(sc.next());
		}

		solve(N, Q, S, lr);
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = Integer.parseInt(sc.next()); N Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc int Q = Integer.parseInt(sc.next()); Q Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc String S = sc.next(); S sc.next() sc.next sc int[][] lr = new int[Q][2]; lr new int[Q][2] Q 2 for (int i = 0; i < Q; i++) {
			lr[i][0] = Integer.parseInt(sc.next());
			lr[i][1] = Integer.parseInt(sc.next());
		} int i = 0; int i = 0; i 0 i < Q i Q i++ i++ i {
			lr[i][0] = Integer.parseInt(sc.next());
			lr[i][1] = Integer.parseInt(sc.next());
		} {
			lr[i][0] = Integer.parseInt(sc.next());
			lr[i][1] = Integer.parseInt(sc.next());
		} lr[i][0] = Integer.parseInt(sc.next()) lr[i][0] lr[i] lr i 0 Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc lr[i][1] = Integer.parseInt(sc.next()) lr[i][1] lr[i] lr i 1 Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc solve(N, Q, S, lr) solve N Q S lr String[] args args static void solve(int n, int q, String s, int[][] lr) {
		int[] t = new int[n];
		for (int i = 0; i < n - 1; i++) {
			int add = s.substring(i, i + 2).equals("AC") ? 1 : 0;
			// 累積和でl-rの区間の出現数をカウントできるようにする
			t[i + 1] = t[i] + add;
		}

		for (int i = 0; i < q; i++) {
			int l = lr[i][0];
			int r = lr[i][1];

			System.out.println(t[r - 1] - t[l - 1]);
		}
	} solve {
		int[] t = new int[n];
		for (int i = 0; i < n - 1; i++) {
			int add = s.substring(i, i + 2).equals("AC") ? 1 : 0;
			// 累積和でl-rの区間の出現数をカウントできるようにする
			t[i + 1] = t[i] + add;
		}

		for (int i = 0; i < q; i++) {
			int l = lr[i][0];
			int r = lr[i][1];

			System.out.println(t[r - 1] - t[l - 1]);
		}
	} int[] t = new int[n]; t new int[n] n for (int i = 0; i < n - 1; i++) {
			int add = s.substring(i, i + 2).equals("AC") ? 1 : 0;
			// 累積和でl-rの区間の出現数をカウントできるようにする
			t[i + 1] = t[i] + add;
		} int i = 0; int i = 0; i 0 i < n - 1 i n - 1 n 1 i++ i++ i {
			int add = s.substring(i, i + 2).equals("AC") ? 1 : 0;
			// 累積和でl-rの区間の出現数をカウントできるようにする
			t[i + 1] = t[i] + add;
		} {
			int add = s.substring(i, i + 2).equals("AC") ? 1 : 0;
			// 累積和でl-rの区間の出現数をカウントできるようにする
			t[i + 1] = t[i] + add;
		} int add = s.substring(i, i + 2).equals("AC") ? 1 : 0; add s.substring(i, i + 2).equals("AC") ? 1 : 0 s.substring(i, i + 2).equals("AC") s.substring(i, i + 2).equals s.substring(i, i + 2) s.substring s i i + 2 i 2 "AC" 1 0 t[i + 1] = t[i] + add t[i + 1] t i + 1 i 1 t[i] + add t[i] t i add for (int i = 0; i < q; i++) {
			int l = lr[i][0];
			int r = lr[i][1];

			System.out.println(t[r - 1] - t[l - 1]);
		} int i = 0; int i = 0; i 0 i < q i q i++ i++ i {
			int l = lr[i][0];
			int r = lr[i][1];

			System.out.println(t[r - 1] - t[l - 1]);
		} {
			int l = lr[i][0];
			int r = lr[i][1];

			System.out.println(t[r - 1] - t[l - 1]);
		} int l = lr[i][0]; l lr[i][0] lr[i] lr i 0 int r = lr[i][1]; r lr[i][1] lr[i] lr i 1 System.out.println(t[r - 1] - t[l - 1]) System.out.println System.out System System.out t[r - 1] - t[l - 1] t[r - 1] t r - 1 r 1 t[l - 1] t l - 1 l 1 int n n int q q String s s int[][] lr lr public class Main {
	public static void main(String[] args) {
		// シミュレーション
		// 累積和の数え上げ
		Scanner sc = new Scanner(System.in);
		int N = Integer.parseInt(sc.next());
		int Q = Integer.parseInt(sc.next());
		String S = sc.next();

		// query
		int[][] lr = new int[Q][2];
		for (int i = 0; i < Q; i++) {
			lr[i][0] = Integer.parseInt(sc.next());
			lr[i][1] = Integer.parseInt(sc.next());
		}

		solve(N, Q, S, lr);
	}

	static void solve(int n, int q, String s, int[][] lr) {
		int[] t = new int[n];
		for (int i = 0; i < n - 1; i++) {
			int add = s.substring(i, i + 2).equals("AC") ? 1 : 0;
			// 累積和でl-rの区間の出現数をカウントできるようにする
			t[i + 1] = t[i] + add;
		}

		for (int i = 0; i < q; i++) {
			int l = lr[i][0];
			int r = lr[i][1];

			System.out.println(t[r - 1] - t[l - 1]);
		}
	}
} public class Main {
	public static void main(String[] args) {
		// シミュレーション
		// 累積和の数え上げ
		Scanner sc = new Scanner(System.in);
		int N = Integer.parseInt(sc.next());
		int Q = Integer.parseInt(sc.next());
		String S = sc.next();

		// query
		int[][] lr = new int[Q][2];
		for (int i = 0; i < Q; i++) {
			lr[i][0] = Integer.parseInt(sc.next());
			lr[i][1] = Integer.parseInt(sc.next());
		}

		solve(N, Q, S, lr);
	}

	static void solve(int n, int q, String s, int[][] lr) {
		int[] t = new int[n];
		for (int i = 0; i < n - 1; i++) {
			int add = s.substring(i, i + 2).equals("AC") ? 1 : 0;
			// 累積和でl-rの区間の出現数をカウントできるようにする
			t[i + 1] = t[i] + add;
		}

		for (int i = 0; i < q; i++) {
			int l = lr[i][0];
			int r = lr[i][1];

			System.out.println(t[r - 1] - t[l - 1]);
		}
	}
} Main
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		// シミュレーション
		// 累積和の数え上げ
		Scanner sc = new Scanner(System.in);
		int N = Integer.parseInt(sc.next());
		int Q = Integer.parseInt(sc.next());
		String S = sc.next();

		// query
		int[][] lr = new int[Q][2];
		for (int i = 0; i < Q; i++) {
			lr[i][0] = Integer.parseInt(sc.next());
			lr[i][1] = Integer.parseInt(sc.next());
		}

		solve(N, Q, S, lr);
	}

	static void solve(int n, int q, String s, int[][] lr) {
		int[] t = new int[n];
		for (int i = 0; i < n - 1; i++) {
			int add = s.substring(i, i + 2).equals("AC") ? 1 : 0;
			// 累積和でl-rの区間の出現数をカウントできるようにする
			t[i + 1] = t[i] + add;
		}

		for (int i = 0; i < q; i++) {
			int l = lr[i][0];
			int r = lr[i][1];

			System.out.println(t[r - 1] - t[l - 1]);
		}
	}
}
