import typing
import sys
input = sys.stdin.readline


def _ceil_pow2(n: int) -> int:
    x = 0
    while (1 << x) < n:
        x += 1

    return x


class SegTree:
    def __init__(self, op, e, lst):
        self.n = len(lst)
        self.N0 = 2 ** (self.n - 1).bit_length()
        self.op = op
        self.e = e
        self.data = [e] * (2 * self.N0)
        if type(lst) is list:
            for i in range(self.n):
                self.data[self.N0 + i] = lst[i]
            for i in range(self.N0 - 1, 0, -1):
                self.data[i] = self.op(self.data[2 * i], self.data[2 * i + 1])

    def get(self, i):
        return self.data[self.N0 + i]

    def set(self, i, x):
        i += self.N0
        self.data[i] = x
        while i > 1:
            i >>= 1
            self.data[i] = self.op(self.data[2 * i], self.data[2 * i + 1])

    def prod(self, l, r):
        if r <= l:
            return self.e
        lres = self.e
        rres = self.e
        l += self.N0
        r += self.N0
        while l < r:
            if l & 1:
                lres = self.op(lres, self.data[l])
                l += 1
            if r & 1:
                r -= 1
                rres = self.op(self.data[r], rres)
            l >>= 1
            r >>= 1
        return self.op(lres, rres)



INF = 1 << 60
N, Q = map(int, input().split())
S = input().strip()


def identity(c):
    # dp = [[INF] * 4 for _ in range(4)]
    dp = [INF] * (4*4)
    k = ord(c) - ord('A')
    for i in range(4):
        for j in range(i, 4):
            if i <= k <= j:
                dp[i*4+j] = 0
            else:
                dp[i*4+j] = 1

    return dp


# 二つの区間をマージ
def op(a, b):
    # dp = [[INF] * 4 for _ in range(4)]
    dp = [INF] * (4*4)
    for i in range(4):
        for j in range(i, 4):
            for k in range(i, j+1):
                dp[i*4+j] = min(dp[i*4+j], a[i*4+k] + b[k*4+j])

    return dp


# e = [[0] * 4 for _ in range(4)]
e = [0] * (4*4)
segt = SegTree(op, e, [identity(c) for c in S])
for _ in range(Q):
    a = input().split()
    match a[0]:
        case '1':
            x = int(a[1]) - 1
            c = a[2]
            segt.set(x, identity(c))
        case '2':
            L, R = int(a[1])-1, int(a[2])
            res = segt.prod(L, R)
            ans = min(res)
            print(ans)
        case _:
            assert False