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

#define M 1000000/* ハッシュ表の行数 */
#define L 14    /* ハッシュ表の列数 */
#define FOUND 1
#define NFOUND 0

char H[M][L]; /* Hash Table */

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

/* convert a string into an integer value */
long long getKey(char str[]){
  long long sum = 0, p = 1, i, len;

  len = strlen(str);
  for ( i = 0; i < len; i++ ){
    sum += p*(getChar(str[i]));
    p *= 5;
  }
  return sum;
}

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

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

/* ハッシュ表から文字列strを探索する関数 */
int find(char str[])
{
  int i = 0, n, str_key, a, b;

  str_key = getKey(str);                   /* strのkey値を求める */
  a = h1(str_key);
  b = h2(str_key);

  while(1)
    {	
      n = ( a + i*b) % M;     /* ハッシュ値を求める*/

      if( H[n][0] == '\0' || i>=M ) /* strが見つかなかった場合*/
	return NFOUND;
      else if( str_key == getKey(H[n]) )     /* strが見つかった場合 */
	return FOUND;
      i++;
    }
}

/* ハッシュ表に文字列strを挿入する関数 */
int insert(char str[])
{
  int i = 0, n, str_key, a,b;

   str_key = getKey(str);                   /* strのkey値を求める */
   a = h1(str_key);
   b = h2(str_key);

  while(1)
    {
     
	
      n = ( a + i*b) % M;     /* ハッシュ値を求める*/

      if( H[n][0] == '\0' )           /* その場所に挿入できる場合*/
	{
	  strcpy( H[n], str);
	  return 1;
	}
      else if( strcmp( H[n], str) == 0 )
	return 1;
      else
	i++;
    }
}

int main(){
    int i, n, h;
    char str[L], com[9];
    for ( i = 0; i < M; i++ ) H[i][0] = '\0';
    
    scanf("%d", &n);
    
    for ( i = 0; i < n; i++ ){
	scanf("%s %s", com, str);

	if ( com[0] == 'i' ){
	    insert(str);
	} else {
	    if (find(str)){
		printf("yes\n");
	    } else {
		printf("no\n");
	    }
	}
    }

    return 0;
}

