n,q=map(int,input().split())
s=input()
td=[list(input().split()) for _ in range(q)]
def func0(x):
  # はじめx(0-indexed)にいるゴーレムが0から左にいき消滅するか
  for t,d in td:
    if t==s[x]:
      if d=='R':x+=1
      if d=='L':x-=1
    if x<0:return True
    if x>n-1:return False
  return False
def funcN(x):
  # はじめx(0-indexed)にいるゴーレムがn-1から右にいき消滅するか
  for t,d in td:
    if t==s[x]:
      if d=='R':x+=1
      if d=='L':x-=1
    if x<0:return False
    if x>n-1:return True
  return False

l,r=-1,n
while r-l>1:
  x=(l+r)//2
  if func0(x):
    l,r=x,r
  else:
    l,r=l,x
a=l
l,r=-1,n
while r-l>1:
  x=(l+r)//2
  if funcN(x):
    l,r=l,x
  else:
    l,r=x,r
b=r
print(n-(a+1)-(n-b))