#include <stdio.h>
#include <string.h>

#define L 14
#define M 1052693//1000000に近い素数

char H[M][L];

int GetChar(char c);
long long GetKey(char *c);
int h1(int);
int h2(int);
int h(int,int);
int find(char *c);
int insert(char *c);

int main(){
    int n,i;
    char ins[] = "insert";
    char fin[] ="find";
    scanf("%d",&n);

    for(i=0; i<M; i++) H[i][0] = '\0';

    for(i=0; i<n; i++){

        char order[7],str[L];
        scanf("%s %s",order,str);

        if(strcmp(order,ins) == 0){
            insert(str);
        }else if(strcmp(order,fin) == 0){
            if(find(str)) printf("yes\n");
            else printf("no\n");
        }
    }

    return 0;
}



int GetChar(char c){
    if(c == 'A') return 1;
    else if(c == 'C') return 2;
    else if(c == 'G') return 3;
    else if(c == 'T') return 4;
}

long long GetKey(char c[]){
    long long i,p=1,sum = 0;
    for(i=0; i<strlen(c); i++){
        sum += p*(GetChar(c[i]));
        p *= 5;
    }
    return sum;
}

int h1(int key){
    return key%M;
}

int h2(int key){
    return 1+key%(M-1);    
}

int h(int key,int i){
    return (h1(key)+i*h2(key))%M;
}

int find(char c[]){
    long long key,ind,i=0;
    key = GetKey(c);
    while(1){
        ind = h(key,i);
        if(strcmp(c,H[ind]) == 0) return 1;
        else if (strlen(H[ind]) == 0) return 0;
        i++;
    }
}

int insert(char c[]){
    long long i=0,j,key;
    key = GetKey(c);
    while(1){
        j = h(key,i);
        if(strcmp(c,H[j]) == 0) return 1;
        else if(strlen(H[j]) == 0){
            strcpy(H[j],c);
            return 0;
        }
        i++;
    }
}

