#include <bits/stdc++.h>
int main() {
  int32_t n, q;
  std::cin >> n >> q;
  std::string s;
  std::cin >> s;
  std::vector<std::pair<char, char>> td(q);
  for (auto &i : td) {
    std::cin >> i.first >> i.second;
  }
  auto check_l = [&](int32_t i) -> bool {
    for (const auto &j : td) {
      if (s[i] == j.first) {
        if (j.second == 'L') {
          i--;
          if (i < 0) {
            return true;
          }
        } else {
          i++;
          if (s.size() <= i) {
            return false;
          }
        }
      }
    }
    return false;
  };
  auto check_r = [&](int32_t i) -> bool {
    for (const auto &j : td) {
      if (s[i] == j.first) {
        if (j.second == 'L') {
          i--;
          if (i < 0) {
            return false;
          }
        } else {
          i++;
          if (s.size() <= i) {
            return true;
          }
        }
      }
    }
    return false;
  };
  int32_t l_min = 0, l_max = s.size() - 1;
  while (l_min != l_max) {
    const auto index = (l_min + l_max) / 2;
    if (index == l_min) {
      break;
    }
    if (check_l(index)) {
      l_min = index;
    } else {
      l_max = index;
    }
  }
  int32_t l_ans;
  if (check_l(l_max)) {
    l_ans = l_max;
  } else if (l_min != 0) {
    l_ans = l_min;
  } else if (check_l(0)) {
    l_ans = 0;
  } else {
    l_ans = -1;
  }
  int32_t r_min = 0, r_max = s.size() - 1;
  while (r_min != r_max) {
    const auto index = (r_min + r_max) / 2 + 1;
    if (index == r_max) {
      break;
    }
    if (!check_r(index)) {
      r_min = index;
    } else {
      r_max = index;
    }
  }
  int32_t r_ans;
  if (check_r(r_min)) {
    r_ans = r_min;
  } else if (r_max != s.size() - 1) {
    r_ans = r_max;
  } else if (check_l(s.size() - 1)) {
    r_ans = s.size() - 1;
  } else {
    r_ans = s.size();
  }
  if (l_ans == -1 && r_ans == s.size()) {
    std::cout << s.size() << std::endl;
  } else if (l_ans == -1) {
    std::cout << r_ans << std::endl;
  } else if (r_ans == s.size()) {
    std::cout << s.size() - l_ans - 1 << std::endl;
  } else {
    std::cout << r_ans - l_ans - 1 << std::endl;
  }
  return 0;
}
