############################################## #https://atcoder.jp/contests/abc141/submissions/77328131 from random import randrange MOD=(1<<61)-1 base=randrange(256,MOD-1) def rolling_hash(s): n=len(s) hash_value=[0]*(n+1) power=[1]*(n+1) for i in range(n): power[i+1]=power[i]*base%MOD if isinstance(s[i],str): value=ord(s[i])+1 else: value=s[i]+1 hash_value[i+1]=(hash_value[i]*base+value)%MOD return hash_value,power def get_hash(hash_value,power,left,right): return (hash_value[right]-hash_value[left]*power[right-left])%MOD ############################################## N,Q=map(int,input().split()) S=list(input()) ans=[] for _ in range(Q): q=list(input().split()) if q[0]=='1': i,c=q[1:] i=int(i)-1 S[i]=c else: t=q[1] h,p=rolling_hash(S) M=len(t) ht,_=rolling_hash(t) ok=False tar=ht[M] for l in range(N-M+1): hash=get_hash(h,p,l,l+M) if hash==tar: ok=True break ans.append('Yes' if ok else 'No') import sys sys.stdout.write('\n'.join(map(str,ans))+'\n')