#include <bits/stdc++.h>
using namespace std;
const int BASE = 1000000;
int main(int argc, char *argv[]) {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin >> n;
  vector<pair<int, string> > a;
  for (int k = 0; k < n; k++) {
    string s;
    cin >> s;
    int c = 0, last;
    for (int i = 0; i < s.size(); i++)
      if (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' ||
          s[i] == 'u') {
        c++;
        last = s[i];
      }
    a.push_back(make_pair(last * BASE + c, s));
  }
  sort(a.begin(), a.end());
  vector<pair<string, string> > p, q;
  vector<pair<int, string> > r;
  for (int i = 0; i < n; i++)
    if (i + 1 < n && a[i].first == a[i + 1].first) {
      p.push_back(make_pair(a[i].second, a[i + 1].second));
      i++;
    } else {
      r.push_back(make_pair(a[i].first % BASE, a[i].second));
    }
  sort(r.begin(), r.end());
  for (int i = 0; i < r.size(); i++)
    if (i + 1 < r.size() && r[i].first == r[i + 1].first) {
      q.push_back(make_pair(r[i].second, r[i + 1].second));
      i++;
    }
  while (q.size() < p.size() && p.size() > 0) {
    q.push_back(p.back());
    p.pop_back();
  }
  cout << p.size() << endl;
  for (int i = 0; i < p.size(); i++) {
    cout << q[i].first << ' ' << p[i].first << endl;
    cout << q[i].second << ' ' << p[i].second << endl;
  }
  return 0;
}
