from itertools import repeat from functools import reduce from collections import Counter import operator prod = lambda x: reduce(operator.mul, x, 1) def shift(c, k): return chr((ord(c)-ord('a') + k) % 26 + ord('a')) def q1(s, i, j, k): return s[:i] + ''.join(map(shift, s[i:j+1], repeat(k))) + s[j+1:] n,q = input().strip().split(' ') n,q = [int(n),int(q)] s = input().strip() for a0 in range(q): query = input().strip() if query[0] == '1': s = q1(s, *map(int, query[2:].split())) if query[0] == '2': i,j = map(int, query[2:].split()) d = Counter(s[i:j+1]) a = d.values() p = sum(a)# + prod(map(lambda x: x//2 if x >= 2 else 1, a)) ans = p print(ans)