#include #include #include #include using namespace std; struct Node { struct Node *next[26]; int num; }; Node *head; void Tree_Init() { head = new Node; for (int i = 0; i < 26; ++i) { head->next[i] = NULL; head->num = 0; } } void Tree_Insert(char str[]) { Node *t, *s = head; int len = strlen(str); for (int i = 0; i < len; i++) { int id = str[i] - 'a'; if (s->next[id] == NULL) { t = new Node; for (int j = 0; j < 26; j++) t->next[j] = NULL; t->num = 0; s->next[id] = t; } s = s->next[id]; s->num++; } } int Tree_Find(char str[]) { Node *s = head; int cnt, len = strlen(str); for (int i = 0; i < len; ++i) { int id = str[i] - 'a'; if (s->next[id] == NULL) return 0; else { s = s->next[id]; cnt = s->num; } } return cnt; } void Tree_Del(char str[], int cnt) { Node *s = head; int len = strlen(str); for (int i = 0; i < len; i++) { int id = str[i] - 'a'; s = s->next[id]; s->num -= cnt; } for(int i = 0; i < 26; i++) s->next[i] = NULL; } int main() { //freopen("in.txt", "r", stdin); Tree_Init(); int n; char op[10], str[50]; scanf("%d", &n); for(int i = 1; i <= n; i++) { scanf("%s%s", op, str); if(op[0] == 'i') Tree_Insert(str); else if(op[0] == 'd') { int cnt = Tree_Find(str); if(cnt > 0) Tree_Del(str, cnt); } else { if(Tree_Find(str) > 0) puts("Yes"); else puts("No"); } } return 0; }