output_description: Print the answer.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N Q
      s
      t_1 d_1
      \vdots
      t_{Q} d_Q
attempt: # -*- coding: utf-8 -*-
  
  # -*- coding: utf-8 -*-
  
  # -*- coding: utf-8 -*-
  from sys import stdin
  
  
  ############################################
  # from sys import stdin
  import numpy as np
  
  # read data for n sequences.
  d = stdin.readline().split()
  N = int(d[0])
  Q = int(d[1])
  data = str(stdin.readline().split()[0])
  
  q = []
  for _ in range(Q):
      q.append(stdin.readline().split())
  
  count = 0
  
  
  def leftsearch(N, q, data):
      x = 0
      for spell in q:
          now = data[N]
          if now == spell[0]:
              if spell[1] == "R":
                  N += 1
              else:
                  N -= 1
              if N < 0:
                  x = 1
                  break
              elif N == len(data):
                  break
      return x
  
  
  def rightsearch(N, q, data):
      x = 0
      for spell in q:
          now = data[N]
          if now == spell[0]:
              if spell[1] == "R":
                  N += 1
              else:
                  N -= 1
              if N >= len(data):
                  x = 1
                  break
              elif N == 0:
                  break
      return x
  
  
  # binary search
  left = 0
  right = len(data) - 1
  while right >= left:
      mid = left + int((right - left) / 2)
      if 1 == leftsearch(mid, q, data):
          left = mid + 1
      else:
          right = mid - 1
  # print("left:",mid)
  if mid == 0:
      if 0 == leftsearch(mid, q, data):
          leftamount = 0
      else:
          leftamount = 1
  else:
      if 1 == leftsearch(mid, q, data):
          leftamount = mid + 1
      else:
          leftamount = mid
  
  # right binary
  left = 0
  right = len(data) - 1
  while right >= left:
      mid = left + int((right - left) / 2)
      #    print(mid)
      if 1 == rightsearch(mid, q, data):
          right = mid - 1
      else:
          left = mid + 1
  # print("right:",mid)
  
  # if mid == len(data)-1:
  if 0 == rightsearch(mid, q, data):
      rightamount = 0
  else:
      rightamount = 1
  
  rightamount += len(data) - 1 - mid
  
  print(len(data) - (leftamount + rightamount))
  
problem_description: Statement
  
  There are N squares numbered 1 to N from left to right. Each square has a
  character written on it, and Square i has a letter s_i. Besides, there is
  initially one golem on each square.
  
  Snuke cast Q spells to move the golems.
  
  The i-th spell consisted of two characters t_i and d_i, where d_i is `L` or
  `R`. When Snuke cast this spell, for each square with the character t_i, all
  golems on that square moved to the square adjacent to the left if d_i is `L`,
  and moved to the square adjacent to the right if d_i is `R`.
  
  However, when a golem tried to move left from Square 1 or move right from
  Square N, it disappeared.
  
  Find the number of golems remaining after Snuke cast the Q spells.
samples: [{"input": "3 4\n    ABC\n    A L\n    B L\n    B R\n    A R", "output": "2\n    \n\n  * Initially, there is one golem on each square.\n  * In the first spell, the golem on Square 1 tries to move left and disappears.\n  * In the second spell, the golem on Square 2 moves left.\n  * In the third spell, no golem moves.\n  * In the fourth spell, the golem on Square 1 moves right.\n  * After the four spells are cast, there is one golem on Square 2 and one golem on Square 3, for a total of two golems remaining.\n\n* * *"}, {"input": "8 3\n    AABCBDBA\n    A L\n    B R\n    A R", "output": "5\n    \n\n  * After the three spells are cast, there is one golem on Square 2, two golems on Square 4 and two golems on Square 6, for a total of five golems remaining.\n  * Note that a single spell may move multiple golems.\n\n* * *"}, {"input": "10 15\n    SNCZWRCEWB\n    B R\n    R R\n    E R\n    W R\n    Z L\n    S R\n    Q L\n    W L\n    B R\n    C L\n    A L\n    N L\n    E R\n    Z L\n    S L", "output": "3"}]