#include <bits/stdc++.h>
long long idx[26];
long long table[26][1000001];
long long map[1000001];
char input[1000001];
int ctoi(char c) { return c - 'A'; }
void rshift(int, long long);
void lshift(int, long long);
void p(long long);
int main(void) {
  long long N, Q;
  scanf("%lld %lld", &N, &Q);
  scanf("%s", input);
  for (long long i = 0; i < N; i++) {
    char c = input[i];
    table[ctoi(c)][idx[ctoi(c)]++] = i;
    map[i] = 1;
  }
  for (long long i = 0; i < Q; i++) {
    char t, d;
    scanf("%*c%c %c", &t, &d);
    if (d == 'R') {
      rshift(ctoi(t), N);
    } else {
      lshift(ctoi(t), N);
    }
  }
  long long sum = 0;
  for (int i = 0; i < N; i++) {
    sum += map[i];
  }
  printf("%lld\n", sum);
  return 0;
}
void rshift(int t, long long N) {
  for (int i = 0; i < idx[t]; i++) {
    long long pos = table[t][i];
    if (pos <= N) {
      map[pos + 1] += map[pos];
    }
    map[pos] = 0;
  }
}
void lshift(int t, long long N) {
  for (int i = 0; i < idx[t]; i++) {
    long long pos = table[t][i];
    if (pos > 0) {
      map[pos - 1] += map[pos];
    }
    map[pos] = 0;
  }
}
void p(long long N) {
  for (int i = 0; i < N; i++) printf(" %lld", map[i]);
  printf("\n");
}
