#include <iostream>


int main() {


	//入力
	int N, Q, char* s, * t, * d;
	std::cin >> N >> Q;
	s = new char[N];
	std::cin >> s;
	t = new char[Q];
	d = new char[Q];
	for (int i = 0; i < Q; i++)std::cin >> t[i] >> d[i];


	//処理
	int* num_gorem = new int[N + 2];//端っこの二つも含める
	for (int i = 0; i < N + 2; i++)num_gorem[i] = 1;//num_goremにそれぞれ1を代入
	for (int i = 0; i < Q; i++) {//i->i番目の呪文の文字
		for (int j = 0; j < N; j++) {//j->j番目の入力文字列の文字
			if (t[i] == s[j]) {//もし同じ文字だった場合
				if (d[i] == 'L') {//左に移動する場合
					num_gorem[1 + j - 1] += num_gorem[1 + j];
					num_gorem[1 + j] = 0;
				}
				else if (d[i] == 'R') {//右に移動する場合
					num_gorem[1 + j + 1] += num_gorem[1 + j];
					num_gorem[1 + j] = 0;
				}
			}
		}
	}


	//出力
	int ans = 0;
	for (int i = 1; i < N; i++) {
		ans += num_gorem[i];
	}
	std::cout << ans;


	//終了処理
	delete[] s, t, d, num_gorem;


	return 0;


}