from sortedcontainers import SortedSet n, q = map(int, input().split()) s = list(input()) pos = [SortedSet([n]) for _ in range(26)] def get(c): return ord(c) - ord('a') for i in range(n): pos[get(s[i])].add(i) for _ in range(q): query = input().split() t = query[0] if t == "1": i = int(query[1]) - 1 c = query[2] pos[get(s[i])].remove(i) s[i] = c pos[get(s[i])].add(i) if t == "2": t = query[1] p = -1 for j in range(len(t)): if p == n: break next_index = pos[get(t[j])].bisect_right(p) p = pos[get(t[j])][next_index] if p != n: print("Yes") else: print("No")