#include <bits/stdc++.h>
using namespace std;
struct Map {
  char c;
  int num[200000], count = 0;
} map[30];
int main() {
  int N, Q, i, j, k, *golem, sum = 0, mapnum = 0;
  string s;
  char *t, *d;
  cin >> N >> Q;
  golem = new int[N];
  t = new char[Q];
  d = new char[Q];
  cin >> s;
  for (i = 0; i < N; i++) {
    golem[i] = 1;
    for (j = 0; j < mapnum; j++) {
      if (s[i] == map[j].c) {
        map[j].num[map[j].count++] = i;
      }
    }
    if (j == mapnum) {
      map[j].c = s[i];
      map[j].num[0] = i;
      map[j].count++;
      mapnum++;
    }
  }
  for (i = 0; i < Q; i++) {
    cin >> t[i] >> d[i];
    if (d[i] == 'L') {
      for (j = 0; j < mapnum; j++) {
        if (t[i] == map[j].c) {
          for (k = 0; k < map[j].count; k++) {
            if (golem[map[j].num[k]] != 0) {
              if (map[j].num[k] != 0) {
                golem[map[j].num[k] - 1] += golem[map[j].num[k]];
              }
            }
            golem[map[j].num[k]] = 0;
          }
          break;
        }
      }
    } else {
      for (j = 0; j < mapnum; j++) {
        if (t[i] == map[j].c) {
          for (k = map[j].count - 1; k >= 0; k--) {
            if (golem[map[j].num[k]] != 0) {
              if (map[j].num[k] != N - 1) {
                golem[map[j].num[k] + 1] += golem[map[j].num[k]];
              }
            }
            golem[map[j].num[k]] = 0;
          }
          break;
        }
      }
    }
  }
  for (i = 0; i < N; i++) {
    sum += golem[i];
  }
  cout << sum << endl;
  return 0;
}
