#include <bits/stdc++.h>
using namespace std;
const int N = 101;
const long long MOD = 1e9 + 7;
const double eps = 1e-9;
struct type {
  int id, amb, astr;
  type() { id = 0, amb = 0, astr = 0; }
  type(int i, int a1, int a2) {
    id = i;
    amb = a1;
    astr = a2;
  }
  type(int c) { id = c, amb = 0, astr = 0; }
};
int n, c;
char s[N];
map<string, int> m;
vector<type> v;
inline void fix(pair<int, int>& u) {
  if (u.first == -1) return;
  int mn = min(u.first, u.second);
  u.first -= mn;
  u.second -= mn;
}
int main() {
  scanf("%d", &n);
  m["void"] = c++;
  v.push_back(type());
  for (int i = 0; i < n; i++) {
    scanf("%s", s);
    if (strlen(s) == 7) {
      scanf("%s", s);
      string t = "";
      int amb = 0, astr = 0, l = strlen(s);
      for (int j = 0; j < l; j++) {
        if (s[j] == '&')
          amb++;
        else if (s[j] == '*')
          astr++;
        else
          t += s[j];
      }
      int mn = min(amb, astr);
      amb -= mn;
      astr -= mn;
      int a = -1, b = -1;
      if (t == "errtype" || (t == "void" && amb))
        a = -1;
      else {
        if (m.find(t) == m.end())
          a = -1;
        else
          a = m[t];
      }
      scanf("%s", s);
      t = string(s);
      if (m.find(t) == m.end()) {
        v.push_back(type(c));
        m[t] = c++;
      }
      b = m[t];
      if (a == -1 || v[a].amb == -1 || (a == 0 && amb)) {
        v[b].amb = -1;
        v[b].astr = 0;
      } else {
        v[b].amb = amb + v[a].amb;
        v[b].astr = astr + v[a].astr;
        mn = min(v[b].amb, v[b].astr);
        v[b].amb -= mn;
        v[b].astr -= mn;
        if (v[b].amb > v[b].astr) {
          v[b].amb = -1;
          v[b].astr = 0;
        }
      }
    } else {
      scanf("%s", s);
      string t = "";
      int amb = 0, astr = 0, l = strlen(s);
      for (int j = 0; j < l; j++) {
        if (s[j] == '&')
          amb++;
        else if (s[j] == '*')
          astr++;
        else
          t += s[j];
      }
      if (m.find(t) == m.end())
        puts("errtype");
      else {
        int a = m[t];
        pair<int, int> res = make_pair(v[a].amb, v[a].astr);
        if (res.first != -1) {
          res.first += amb;
          res.second += astr;
          fix(res);
        }
        if (res.first == -1 || res.first)
          puts("errtype");
        else
          printf("void%s\n", string(res.second, '*').c_str());
      }
    }
  }
  return 0;
}
