#include <bits/stdc++.h>
using namespace std;
int N, Q;
char s[212345], t[212345], d[212345];
int main() {
  scanf("%d%d%s", &N, &Q, s);
  for (long long i = 0; i < (Q); ++i) scanf("%s%s", &t[i], &d[i]);
  int l = 0, r = N - 1;
  int lmax = -1, rmax = N;
  bool f = false;
  for (long long i = 0; i < (Q); ++i) {
    int q = Q - i - 1;
    if (f) {
      if (t[q] == s[l + 1] && d[q] == 'L') ++l;
      if (t[q] == s[l] && d[q] == 'R') {
        --q;
        while (t[q] != s[l] && d[q] != 'L') {
          if (!l || q == -1) break;
          if (t[q] == s[l - 1] && d[q] == 'R') --l;
          --q;
        }
        lmax = max(lmax, l - 1);
        f = false;
        l = 0;
        break;
      }
    } else if (t[q] == s[0] && d[q] == 'L')
      f = true;
  }
  if (f) lmax = max(lmax, l);
  f = false;
  for (long long i = 0; i < (Q); ++i) {
    int q = Q - i - 1;
    if (f) {
      if (t[q] == s[r - 1] && d[q] == 'R') --r;
      if (t[q] == s[r] && d[q] == 'L') {
        --q;
        while (t[q] != s[r] && d[q] != 'R') {
          if (r == N - 1 || q == -1) break;
          if (t[q] == s[r + 1] && d[q] == 'R') ++r;
          --q;
        }
        rmax = min(rmax, r + 1);
        f = false;
        r = N - 1;
        break;
      }
    } else if (t[q] == s[N - 1] && d[q] == 'R')
      f = true;
  }
  if (f) rmax = min(rmax, r);
  printf("%d\n", max(0, N - (lmax + 1) - (N - rmax)));
  return 0;
}
