#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
set<char> ch = {'a', 'e', 'i', 'o', 'u'};
map<int, map<char, vector<int>>> mp;
string a[N];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    string str;
    cin >> str;
    a[i] = str;
    int cnt = 0;
    char last = 0;
    for (int i = 0; i < str.size(); i++) {
      if (ch.count(str[i])) {
        cnt++;
        last = str[i];
      }
    }
    mp[cnt][last].push_back(i);
  }
  vector<pair<int, int>> c1, c2;
  for (auto &p : mp) {
    vector<int> tmp;
    for (auto &q : p.second) {
      auto &v = q.second;
      for (int i = 0; i + 1 < v.size(); i += 2) {
        c2.push_back({v[i], v[i + 1]});
      }
      if (v.size() % 2) {
        tmp.push_back(v.back());
      }
    }
    for (int i = 0; i + 1 < tmp.size(); i += 2) {
      c1.push_back({tmp[i], tmp[i + 1]});
    }
  }
  while (c1.size() < c2.size()) {
    c1.push_back(c2.back());
    c2.pop_back();
  }
  int tot = min(c1.size(), c2.size());
  cout << tot << endl;
  for (int i = 0; i < tot; i++) {
    cout << a[c1[i].first] << ' ' << a[c2[i].first] << endl;
    cout << a[c1[i].second] << ' ' << a[c2[i].second] << endl;
  }
  return 0;
}
