# -*- coding: utf-8 -*-

# -*- coding: utf-8 -*-

# -*- coding: utf-8 -*-
from sys import stdin

###########################################
# delete here


############################################
#from sys import stdin
import numpy as np

# read data for n sequences.
d = stdin.readline().split()
N = int(d[0])
Q = int(d[1])
data = str(stdin.readline().split()[0])

q = []
for _ in range(Q):
    q.append(stdin.readline().split())

count=0
right=[]
left=[]
leftdict={}
rightdict={}
cache=[]

for i in data:
    if i not in cache:
        leftdict[i]=[]
        rightdict[i]=[]
        cache.append(i)
    
for i,d in enumerate(q):
    if d[0] in cache:
        if d[1]=='R':
            rightdict[d[0]].append(i)
        else:
            leftdict[d[0]].append(i)
        
#for i in data:
# それは捨てられるか、または最後にすてられる順番も記録。
# 捨てられるタイミングが最後に前の数字が捨てられる順番が前だったら続ける。
last=Q+1
count=0
for i in data:
    token=0
    for elm in reversed(leftdict[i]):
        if last>elm:
           count+=1
           last=elm
           token=1
           break
    if token==0:
        break
#print(count)
last=Q+1
    
for i in reversed(data):
    token=0
    for elm in reversed(rightdict[i]):
        if last>elm:
           count+=1
           last=elm
           token=1
           break
    if token==0:
        break    
print(N-count)
