#include <bits/stdc++.h>
using namespace std;
const char ops[] = "$^#&";
struct symbol;
map<uint64_t, symbol*> symequiv;
vector<string> program;
set<string> names;
void init_names() {
  char ch[5] = {};
  for (ch[0] = 'a'; ch[0] <= 'z'; ch[0]++)
    for (ch[1] = 'a'; ch[1] <= 'z'; ch[1]++)
      for (ch[2] = 'a'; ch[2] <= 'z'; ch[2]++)
        for (ch[3] = 'a'; ch[3] <= 'z'; ch[3]++) names.insert(ch);
}
string alloc_name() {
  string ret = *names.begin();
  names.erase(names.begin());
  return ret;
}
mt19937_64 rangen(time(NULL));
std::hash<string> strhash;
struct symbol {
  int type;
  string name;
  uint64_t hash;
  symbol *lhs, *rhs;
  symbol(string name) : type(-1), name(name), hash(rangen()) {
    ((void)0);
    names.erase(name);
    symequiv[hash] = this;
  }
  symbol(int op, symbol* lhs, symbol* rhs)
      : type(op),
        hash(strhash(to_string(lhs->hash) + char('A' + op) +
                     to_string(rhs->hash))),
        lhs(lhs),
        rhs(rhs) {
    ((void)0);
    symequiv[hash] = this;
  }
  void gen(bool isres = false) {
    ((void)0);
    if (isres and type == -1 and name != "res") {
      program.push_back("res=" + name);
      return;
    }
    if (name.size()) return;
    lhs = symequiv[lhs->hash];
    lhs->gen();
    rhs = symequiv[rhs->hash];
    rhs->gen();
    name = isres ? "res" : alloc_name();
    program.push_back(name + "=" + lhs->name + ops[type] + rhs->name);
  }
};
vector<symbol> symbols;
map<string, symbol*> symtbl;
symbol* getsym(string str) {
  if (symtbl.count(str)) return symtbl[str];
  symbols.emplace_back(str);
  return symtbl[str] = &symbols.back();
}
void parse(char instr[]) {
  char *pos = strchr(instr, '='), *posop;
  *(pos++) = '\0';
  for (int i = 0; i < int(4); i++) {
    if (!(posop = strchr(pos, ops[i]))) continue;
    *(posop++) = '\0';
    symbols.emplace_back(i, getsym(pos), getsym(posop));
    symtbl[instr] = &symbols.back();
    return;
  }
  symbol* sym = getsym(pos);
  symtbl[instr] = sym;
}
int main() {
  init_names();
  symbols.reserve(10240);
  int n;
  scanf("%d", &n);
  for (int i = 0; i < int(n); i++) {
    char instr[256];
    scanf("%s", instr);
    parse(instr);
  }
  getsym("res")->gen(true);
  cout << program.size() << endl;
  for (string str : program) cout << str << endl;
  return 0;
}
