N, Q = map(int, input().split())
s = input()
AlphabetSet = set()
ThingDict = {}
ShiftDict = {}

for i, alphabet in enumerate(s):
	ThingDict.setdefault(alphabet, [])
	ThingDict[alphabet].append(i)
	ShiftDict.setdefault(alphabet, [])

Step = 1
for i in range(Q):
	t, d = input().split()
	if d == "L":
		try:
			ShiftDict[t].append([-1, Step])
			Step += 1
		except KeyError:
			pass
	elif d == "R":
		try:
			ShiftDict[t].append([1, Step])
			Step += 1
		except KeyError:
			pass

# Gone from left side
MinusList = []
PlusList = []
for i, alphabet in enumerate(s):
	tempMinusList = []
	tempPlusList = []
	for sdict in ShiftDict[alphabet]:
		if sdict[0] == -1:
			tempMinusList.append(sdict[1])
		if sdict[0] == 1:
			tempPlusList.append(sdict[1])
	if tempMinusList != []:
		MinusList.append(tempMinusList)
		PlusList.append(tempPlusList)
	else:
		break




tempStep = []
for i in range(len(MinusList)-1):
	Ml_i = MinusList[i]
	Pl_ip1 = PlusList[i+1]
	Ml_ip1 = MinusList[i+1]

	for Mi in Ml_i:

		Max_Pip1 = 0
		for Pip1 in Pl_ip1:
			if Pip1 < Mi and Pip1 > Max_Pip1:
				Max_Pip1 = Pip1

		Max_Mip1 = 0
		for Mip1 in Ml_ip1:
			if Mip1 < Mi and Mip1 > Max_Mip1:
				Max_Mip1 = Mip1
		
		if Max_Mip1 == 0:
			tempStep.append(i)
			break
		elif Max_Mip1 > Max_Pip1:
			tempStep.append(i)
		else:
			tempStep.append(i)
			break

if len(tempStep) > 0:
	Ans = N - max(tempStep) - 1


# Gone from right side
MinusList = []
PlusList = []
for i, alphabet in enumerate(reversed(s)):
	tempMinusList = []
	tempPlusList = []
	for sdict in ShiftDict[alphabet]:
		if sdict[0] == -1:
			tempMinusList.append(sdict[1])
		if sdict[0] == 1:
			tempPlusList.append(sdict[1])
	if tempPlusList != []:
		MinusList.append(tempMinusList)
		PlusList.append(tempPlusList)
	else:
		break

tempStep = []
for i in range(len(PlusList)-1,1,-1):
	Pl_i = PlusList[i]
	Pl_ip1 = PlusList[i-1]
	Ml_ip1 = MinusList[i-1]

	for Pi in Pl_i:

		Max_Mip1 = 0
		for Mip1 in Ml_ip1:
			if Mip1 < Pi and Mip1 > Max_Mip1:
				Max_Mip1 = Mip1

		Max_Pip1 = 0
		for Pip1 in Pl_ip1:
			if Mip1 < Pi and Pip1 > Max_Pip1:
				Max_Pip1 = Pip1
		
		if Max_Pip1 == 0:
			tempStep.append(i)
			break
		elif Max_Pip1 > Max_Mip1:
			tempStep.append(i)
		else:
			tempStep.append(i)
			break

if len(tempStep) > 0:
	Ans = Ans - max(tempStep) - 1

print(Ans)
