#include <bits/stdc++.h>
int main() {
  int N, Q;
  std::cin >> N >> Q;
  std::string s = "";
  std::cin >> s;
  std::string s2((int)N, '0');
  int numR = 0;
  int numB = 0;
  char t = 'a';
  char d = 'a';
  std::vector<std::vector<int>> A;
  A.assign(26, std::vector<int>(N, 0));
  std::vector<std::vector<int>> G;
  G.assign(Q + 1, std::vector<int>(N, 0));
  for (int i = 0; i < N; i++) {
    A[(int)s[i] - 65][i] = 1;
    G[0][i] = 1;
  }
  for (int i = 0; i < Q; i++) {
    std::cin >> t >> d;
    if (d == 'L') {
      G[i + 1][N - 1] = (1 - A[(int)t - 65][N - 1]) * G[i][N - 1];
      for (int j = 0; j < (N - 1); j++) {
        int k, l;
        k = A[(int)t - 65][j + 1];
        l = G[i][j + 1];
        G[i + 1][j] = (1 - A[(int)t - 65][j]) * G[i][j] +
                      A[(int)t - 65][j + 1] * G[i][j + 1];
      }
    } else {
      G[i + 1][0] = (1 - A[(int)t - 65][0]) * G[i][0];
      for (int j = 1; j < N; j++) {
        G[i + 1][j] = (1 - A[(int)t - 65][j]) * G[i][j] +
                      A[(int)t - 65][j - 1] * G[i][j - 1];
      }
    }
  }
  int nt = 0;
  for (int i = 0; i < N; i++) {
    nt += G[Q][i];
  }
  std::cout << nt << std::endl;
  return 0;
}
