#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, q;
  string s;
  cin >> n >> q;
  cin >> s;
  vector<pair<char, char>> v(q);
  for (int i = 0; i < q; i++) {
    cin >> v[i].first >> v[i].second;
  }
  int l = 0, r = n;
  while (r - l > 1) {
    int m = (l + r) / 2;
    int idx = m;
    for (int i = 0; i < q; i++) {
      if (v[i].first == s[idx]) {
        if (v[i].second == 'L') {
          idx--;
        } else {
          idx++;
        }
      }
      if (idx < 0 || idx >= n) {
        break;
      }
    }
    if (idx < 0) {
      l = m;
    } else {
      r = m;
    }
  }
  int a = l;
  l = 0;
  r = n;
  while (r - l > 1) {
    int m = (l + r) / 2;
    int idx = m;
    for (int i = 0; i < q; i++) {
      if (v[i].first == s[idx]) {
        if (v[i].second == 'L') {
          idx--;
        } else {
          idx++;
        }
      }
      if (idx < 0 || idx >= n) {
        break;
      }
    }
    if (idx >= n) {
      r = m;
    } else {
      l = m;
    }
  }
  int b = r;
  if (a != 0 && b != n) {
    cout << b - a - 1 << endl;
  } else if (a == 0 && b == n) {
    bool A = 1, B = 1;
    int idx = 0;
    for (int i = 0; i < q; i++) {
      if (v[i].first == s[idx]) {
        if (v[i].second == 'L') {
          idx--;
        } else {
          idx++;
        }
      }
      if (idx < 0 || idx >= n) {
        break;
      }
    }
    if (idx < 0) {
      A = 1;
    } else {
      A = 0;
    }
    idx = n - 1;
    for (int i = 0; i < q; i++) {
      if (v[i].first == s[idx]) {
        if (v[i].second == 'L') {
          idx--;
        } else {
          idx++;
        }
      }
      if (idx < 0 || idx >= n) {
        break;
      }
    }
    if (idx >= n) {
      B = 1;
    } else {
      B = 0;
    }
    if (A && B) {
      cout << n - 2 << endl;
    } else if (A || B) {
      cout << n - 1 << endl;
    } else {
      cout << n << endl;
    }
  } else if (a == 0) {
    bool A = 1;
    int idx = 0;
    for (int i = 0; i < q; i++) {
      if (v[i].first == s[idx]) {
        if (v[i].second == 'L') {
          idx--;
        } else {
          idx++;
        }
      }
      if (idx < 0 || idx >= n) {
        break;
      }
    }
    if (idx < 0) {
      A = 1;
    } else {
      A = 0;
    }
    if (A) {
      cout << b - 1 << endl;
    } else {
      cout << b << endl;
    }
  } else if (b == n) {
    bool B = 1;
    int idx = n - 1;
    for (int i = 0; i < q; i++) {
      if (v[i].first == s[idx]) {
        if (v[i].second == 'L') {
          idx--;
        } else {
          idx++;
        }
      }
      if (idx < 0 || idx >= n) {
        break;
      }
    }
    if (idx >= n) {
      B = 1;
    } else {
      B = 0;
    }
    if (!B) {
      cout << b - a - 1 << endl;
    } else {
      cout << b - a << endl;
    }
  }
  return 0;
}
