#include <bits/stdc++.h>
using namespace std;
string a[4];
char s[200005], o[2], tmp[2];
int nxt[200005][26], n, q, i, pos, g[4], dp[252][252][252];
int main() {
  scanf("%d%d%s", &n, &q, s + 1);
  a[1] = a[2] = a[3] = "0";
  for (int i = 0; i < 26; i++) nxt[n][i] = nxt[n + 1][i] = n + 1;
  for (int i = n - 1; i >= 0; i--)
    for (int j = 0; j < 26; j++)
      if (s[i + 1] == j + 'a')
        nxt[i][j] = i + 1;
      else
        nxt[i][j] = nxt[i + 1][j];
  while (q--) {
    scanf("%s%d", o, &i);
    if (o[0] == '+') {
      scanf("%s", tmp);
      a[i] += tmp[0];
      int h = tmp[0] - 'a';
      if (i == 1) {
        int t = a[1].size() - 1;
        for (int j = 0; j < a[2].size(); j++)
          for (int k = 0; k < a[3].size(); k++) {
            dp[t][j][k] = nxt[dp[t - 1][j][k]][h];
            if (j)
              dp[t][j][k] =
                  min(dp[t][j][k], nxt[dp[t][j - 1][k]][a[2][j] - 'a']);
            if (k)
              dp[t][j][k] =
                  min(dp[t][j][k], nxt[dp[t][j][k - 1]][a[3][k] - 'a']);
          }
      } else if (i == 2) {
        int t = a[2].size() - 1;
        for (int j = 0; j < a[1].size(); j++)
          for (int k = 0; k < a[3].size(); k++) {
            dp[j][t][k] = nxt[dp[j][t - 1][k]][h];
            if (j)
              dp[j][t][k] =
                  min(dp[j][t][k], nxt[dp[j - 1][t][k]][a[1][j] - 'a']);
            if (k)
              dp[j][t][k] =
                  min(dp[j][t][k], nxt[dp[j][t][k - 1]][a[3][k] - 'a']);
          }
      } else {
        int t = a[3].size() - 1;
        for (int j = 0; j < a[1].size(); j++)
          for (int k = 0; k < a[2].size(); k++) {
            dp[j][k][t] = nxt[dp[j][k][t - 1]][h];
            if (j)
              dp[j][k][t] =
                  min(dp[j][k][t], nxt[dp[j - 1][k][t]][a[1][j] - 'a']);
            if (k)
              dp[j][k][t] =
                  min(dp[j][k][t], nxt[dp[j][k - 1][t]][a[2][k] - 'a']);
          }
      }
    } else
      a[i].pop_back();
    puts(dp[a[1].size() - 1][a[2].size() - 1][a[3].size() - 1] <= n ? "YES"
                                                                    : "NO");
  }
  return 0;
}
