#include <bits/stdc++.h>
using namespace std;
struct lyrics {
  string s[2];
  lyrics() : s{} {};
};
int main() {
  int N;
  scanf("%d", &N);
  map<int, map<char, string>> m;
  stack<lyrics> fps;
  stack<string> final;
  for (int i = 0; i < (N); i++) {
    string s;
    cin >> s;
    int cnt = 0, lw = 0;
    for (auto c : s) {
      if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
        cnt++;
        lw = c;
      }
    }
    if (cnt) {
      if (m[cnt][(char)lw] != "") {
        lyrics l;
        l.s[0] = s;
        l.s[1] = m[cnt][(char)lw];
        fps.push(l);
        m[cnt].erase((char)lw);
      } else {
        m[cnt][(char)lw] = s;
      }
    }
  }
  for (auto&(tot) : (m)) {
    string last = "";
    for (auto&(t) : (tot.second)) {
      if (last != "") {
        if (fps.empty()) goto end;
        auto ts = fps.top();
        fps.pop();
        string s =
            last + " " + ts.s[0] + '\n' + t.second + " " + ts.s[1] + '\n';
        final.push(s);
        last = "";
      } else {
        last = t.second;
      }
    }
    last = "";
  }
  {
    lyrics la;
    while (!fps.empty()) {
      if (la.s[0] == "") {
        la = fps.top();
        fps.pop();
      } else {
        string ans = fps.top().s[0] + " " + la.s[0] + '\n' + fps.top().s[1] +
                     " " + la.s[1] + '\n';
        fps.pop();
        final.push(ans);
        la = lyrics();
      }
    }
  }
end:
  cout << final.size() << endl;
  while (!final.empty()) {
    cout << final.top();
    final.pop();
  }
  return 0;
}
