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

#define M 1000

char H[M];
int n;

int charToInt(char ch) {
  if ( ch == 'A') {
    return 1;
  } else if (ch == 'B') {
    return 2;
  } else if (ch == 'C') {
    return 3;
  } else {
    return 4;
  }
}

long long getKey(char str[]) {
  long long key = 0;
  for (int i = 0; i < strlen(str); i++) {
    key += charToInt(str[i]);
  }
  return key;
}

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

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

int insert(char str[]) {
  long long key, i, h;
  key = getKey(str);
  h = (h1(key) + i * h2(key)) % M;
  if (strcmp(&H[h], str) == 0) {
    return 1;
  } else if (strlen(&H[h])  == 0) {
    strcpy(&H[h], str);
    return 0;
  }
  return 0;
}

int find(char str[]) {
  long long key, i, h;
  key = getKey(str);
  for (i = 0; i < n; i++) {
    h = (h1(key) + i * h2(key)) % M;
    if (strcmp(&H[h], str) == 0) {
      return 1;
    } else if (strlen(&H[h]) == 0) {
      return 0;
    }
  }
  return 0;
}

int main() {
  char str[12], com[5];

  scanf("%d\n", &n);
  // finの結果を格納する  1: "yes", 2: "no"
  int res[n];
  // res[n]用のindex
  int j = 0;

  for (int i = 0; i < n; i++) {
    scanf("%s %s", com, str);
    if (com[0] == 'i') {
      insert(str);
    } else {
      if (find(str)) {
        res[j] = 1;
      } else {
        res[j] = 0;
      }
      j++;
    }
  }
  for (int i = 0; i < j; i++) {
    if (res[i] == 1) {
      printf("%s\n", "yes");
    } else {
      printf("%s\n", "no");
    }
  }
  return 0;
}

