#include <bits/stdc++.h>
using namespace std;
const char vowel[] = "aeoiu";
const int N = 1e5 + 5;
int n, cnt[N], vow[N], t[N], ind[N], d[N * 10][5], w[N * 10][5], Cnt;
char cs[N * 10];
string s[N];
int cmp(const int &i, const int &j) {
  return t[i] < t[j] ||
         (t[i] == t[j] &&
          (cnt[i] < cnt[j] || (cnt[i] == cnt[j] && vow[i] < vow[j])));
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%s", cs);
    s[i] = cs;
    int v = 0, c = 0;
    for (int j = 0; cs[j] != '\0'; ++j)
      for (int z = 0; z < 5; ++z)
        if (cs[j] == vowel[z]) {
          c += 1;
          v = z;
          break;
        }
    if (d[c][v] & 1)
      t[w[c][v]] = 0;
    else
      t[i] = 1;
    d[c][v] += 1;
    w[c][v] = i;
    cnt[i] = c;
    vow[i] = v;
    ind[i] = i;
  }
  sort(ind + 1, ind + 1 + n, cmp);
  for (int a = 2, b = n - 1; a < b && t[ind[a - 1]] == 0; a += 2, b -= 2) {
    while (a < b && cnt[ind[b]] != cnt[ind[b + 1]]) b -= 1;
    if (a < b) Cnt += 1;
  }
  printf("%d\n", Cnt);
  for (int a = 2, b = n - 1; a < b && t[ind[a - 1]] == 0; a += 2, b -= 2) {
    while (a < b && cnt[ind[b]] != cnt[ind[b + 1]]) b -= 1;
    if (a < b)
      printf("%s %s\n%s %s\n", s[ind[b]].c_str(), s[ind[a]].c_str(),
             s[ind[b + 1]].c_str(), s[ind[a - 1]].c_str());
  }
}
