/* -*- coding: utf-8 -*- * * 3637.cc: No.3637 PANDORA - yukicoder */ #include #include #include using namespace std; /* constant */ const int MAX_N = 200000; const int MAX_L = 10; /* typedef */ using si = set; /* global variables */ char s[MAX_N + 4]; si pvs[26]; /* subroutines */ bool check(char t[]) { int u = 0; for (int i = 0; t[i]; i++) { auto &pvi = pvs[t[i] - 'a']; auto sit = pvi.lower_bound(u); if (sit == pvi.end()) return false; u = *sit + 1; } return true; } /* main */ int main() { int n, qn; scanf("%d%d%s", &n, &qn, s); for (int i = 0; i < n; i++) pvs[s[i] - 'a'].insert(i); while (qn--) { int op; scanf("%d", &op); if (op == 1) { int i; char t[MAX_L + 4]; scanf("%d%s", &i, t), i--; pvs[s[i] - 'a'].erase(i); s[i] = t[0]; pvs[s[i] - 'a'].insert(i); } else { char t[MAX_L + 4]; scanf("%s", t); if (check(t)) puts("Yes"); else puts("No"); } } return 0; }