Problem:
Search III

Your task is to write a program of a simple dictionary which implements the following instructions:

insert str: insert a string str in to the dictionary

find str: if the distionary contains str, then print 'yes', otherwise print 'no'

Input

In the first line n, the number of instructions is given. In the following n lines, n instructions are given in the above mentioned format.

Output

Print yes or no for each find instruction in a line.

Constraints

A string consists of 'A', 'C', 'G', or 'T'

1 ≤ length of a string ≤ 12

n ≤ 1000000

Sample Input 1

5
insert A
insert T
insert C
find G
find A

Sample Output 1

no
yes

Sample Input 2

13
insert AAA
insert AAC
insert AGA
insert AGG
insert TTT
find AAA
find CCC
find CCC
insert CCC
find CCC
insert T
find TTT
find T

Sample Output 2

yes
no
no
yes
yes
yes

Notes

Template in C

Solution in C (judge verdict: Memory Limit Exceeded)

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

#define MAX 300000000

void insert(char []);
int find(char []);
int getNum(char []);

int hash[MAX];

int main(){
  int i, n;
  char str[15], cmd[10];
  
  for(i=0; i<MAX; i++) hash[i] = 0;
  scanf("%d", &n);
  for(i=0; i<n; i++){
    scanf("%s%s", cmd, str);
    if(cmd[0] == 'i') insert(str);
    else printf(find(str)?"yes\n":"no\n");
  }
  
  return 0;
}

void insert(char str[]){
  int num;
  num = getNum(str);
  hash[num] = 1;
}

int find(char str[]){
  int num;
  num = getNum(str);
  if(hash[num] == 1) return 1;
  return 0;
}

int getNum(char str[]){
  int i, sum = 0, code, x = 1;
  for(i=0; i<strlen(str); i++){
    switch(str[i]){
    case 'A':
      code = 1;
      break;
    case 'C':
      code = 2;
      break;
    case 'G':
      code = 3;
      break;
    case 'T':
      code = 4;
      break;
    }
    sum += code * x;
    x *= 5;
  }
  return sum;
}