using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AtCorder
{
	public class Program
	{
		static void Main(string[] args)
		{
			C();
		}

		public static void C()
		{
			Scanner cin = new Scanner();

			int n = cin.NextInt();
			int ne = n - 1;

			int q = cin.NextInt();
			string s = cin.Next();
			int[] g = new int[n];
			for (int i = 0; i < n; ++i) {
				g[i] = 1;
			}

			for (int i = 0; i < q; ++i) {
				char t = cin.Next()[0];
				char d = cin.Next()[0];
				for (int j = 0; j < n; ++j) {
					if (s[j] == t) {
						if (d == 'L') {
							if (j == 0) {
								g[j] = 0;
							} else {
								g[j - 1] += g[j];
								g[j] = 0;
							}
						} else {
							if (j == ne) {
								g[ne] = 0;
							} else {
								g[j + 1] += g[j];
								g[j] = 0;
							}
						}
						
					}
				}
				
			}

			int count = 0;
			for (int i = 0; i < n; ++i) {
				count += g[i];
			}

			Console.WriteLine(count);
		}
		
		
	}

	public class Scanner
	{
		string[] s;
		int i;

		char[] cs = new char[] { ' ' };

		public Scanner()
		{
			s = new string[0];
			i = 0;
		}

		public string Next()
		{
			if (i < s.Length) return s[i++];
			string st = Console.ReadLine();
			while (st == "") st = Console.ReadLine();
			s = st.Split(cs, StringSplitOptions.RemoveEmptyEntries);
			if (s.Length == 0) return Next();
			i = 0;
			return s[i++];
		}

		public int NextInt()
		{
			return int.Parse(Next());
		}
		public int[] ArrayInt(int N, int add = 0)
		{
			int[] Array = new int[N];
			for (int i = 0; i < N; i++) {
				Array[i] = NextInt() + add;
			}
			return Array;
		}

		public long NextLong()
		{
			return long.Parse(Next());
		}

		public long[] ArrayLong(int N, long add = 0)
		{
			long[] Array = new long[N];
			for (int i = 0; i < N; i++) {
				Array[i] = NextLong() + add;
			}
			return Array;
		}

		public double NextDouble()
		{
			return double.Parse(Next());
		}


		public double[] ArrayDouble(int N, double add = 0)
		{
			double[] Array = new double[N];
			for (int i = 0; i < N; i++) {
				Array[i] = NextDouble() + add;
			}
			return Array;
		}
	}
}
