/* * Author: * Indestinee * Date: * 2016/05/14 */ #include #include #include #include #include #include #include #include #include using namespace std; class node{ public: node(){for(int i=0;i<26;i++){a[i]=NULL;cnt[i] =0;}} int cnt[26]; node *a[26]; }; int n; char a[20], b[40]; void add( node * now , int id , int len ){ if( id == len ) return; int x = b[id] - 'a'; if( now->a[x] == NULL ) now->a[x] = new node; now->cnt[x] ++; add( now->a[x] , id + 1 , len ); } int kill = 0; void del( node *now , int id , int len ){ int x = b[id] - 'a'; if( now->a[x] == NULL ) return; if( id == len - 1 ){ now->a[x] = NULL; kill = now->cnt[x]; }else del( now->a[x] , id + 1 , len ); now->cnt[x] -= kill; if( now->cnt[x] == 0 ) now->a[x] = NULL; } bool ser( node *now , int id , int len ){ int x = b[id] - 'a'; if( now->a[x] == NULL ) return false; if( id == len - 1 ) return true; return ser( now->a[x] , id + 1 , len ); } int main(){ // freopen( "C.in" , "r" , stdin ); // freopen( "C.out" , "w" , stdout ); scanf( "%d" , &n ); node *st = new node; while( n -- ){ kill = 0; scanf( "%s%s" , a , b ); if( a[0] == 'i' ){ add( st , 0 , strlen( b ) ); }else if( a[0] == 'd' ){ del( st , 0 , strlen( b ) ); }else if( a[0] == 's' ){ puts( ser( st , 0 , strlen( b ) ) ? "Yes" : "No" ); } } return 0; }