#include <bits/stdc++.h>
using namespace std;
int n, def[1000][2] = {0}, os = 0;
string op, ba, re;
vector<string> va;
string ur(string str) {
  os = 0;
  int i = 0;
  while (str[i] == '&') {
    i++;
    os--;
  }
  int I = i;
  i = str.length() - 1;
  while (str[i] == '*') {
    i--;
    os++;
  }
  return str.substr(I, i - I + 1);
}
int lkp(string str) {
  if (str.compare("void") == 0) {
    return 999;
  }
  if (str.compare("errtype") == 0) {
    return -1;
  }
  for (int i(0); i < (va.size()); i++) {
    if (va[i].compare(str) == 0) {
      return i;
    }
  }
  return -1;
}
void out(string str) {
  int pos = lkp(str);
  if ((pos == -1) || (def[pos][0] + os < 0) || (def[pos][0] < 0)) {
    cout << "errtype" << endl;
  } else {
    cout << "void";
    for (int i(0); i < (def[pos][0] + os); i++) {
      cout << "*";
    }
    cout << endl;
  }
}
int main() {
  def[999][0] = 0;
  cin >> n;
  for (int i(0); i < (n); i++) {
    cin >> op >> ba;
    if (op.compare("typedef") == 0) {
      int e = 0;
      cin >> re;
      string q = ur(ba);
      int pos = lkp(q);
      int POS = lkp(re);
      if ((pos == -1) || (def[pos][0] < 0)) {
        if (POS == -1) {
          va.push_back(re);
          def[va.size() - 1][0] = -1;
        } else {
          def[POS][0] = -1;
        }
      } else {
        int OS = os + def[pos][0];
        if (OS < 0) {
          if (POS == -1) {
            va.push_back(re);
            def[va.size() - 1][0] = -1;
          } else {
            def[POS][0] = -1;
          }
        } else {
          if (POS == -1) {
            va.push_back(re);
            def[va.size() - 1][0] = OS;
          } else {
            def[POS][0] = OS;
          }
        }
      }
    } else {
      string q = ur(ba);
      out(q);
    }
  }
}
