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

namespace ExaWizards2019C
{
    class Program
    {
        struct square
        {
            public string name;
            public int golem;
        }
        static void Main(string[] args)
        {
            // スペース区切りの整数の入力
            string[] input = Console.ReadLine().Split(' ');
            int N = int.Parse(input[0]);
            square[] D = new square[N + 2]; //左端と右端にゴーレムがはみ出る場所を足した
            int Q = int.Parse(input[1]);
            // 文字列の入力
            string s = Console.ReadLine();
            for (int i = 0; i < N; i++)
            {
                D[i+1].name = s.Substring(i, 1);//D[1]～D[N]に読み込んだ文字をセットする
                D[i + 1].golem = 1;
            }
            for (int j = 0; j < Q; j++)
            {
                string td = Console.ReadLine();
                string type = td.Substring(0, 1);//対象となる列
                string direction = td.Substring(2, 1);//Ｌ：左へ、Ｒ：右へ

                for (int k = 1; k <= N; k++)
                {
                    if ((direction == "L")&&(D[k].name == type) )
                    {
                        D[k - 1].golem += D[k].golem;
                        D[k].golem = 0;
                    }
                    if ((direction == "R") && (D[k].name == type))
                    {
                        D[k + 1].golem += D[k].golem;
                        D[k].golem = 0;
                    }
                }
            }
            Console.WriteLine(N - D[0].golem - D[N + 1].golem); 
        }
    }
}
