#include <bits/stdc++.h>
using namespace std;
const int N = 5e3 + 10;
const int LOG = 21;
const int CNTSZ = 30;
const int INF = 1e9;
const int MOD = 16714589;
const long long LLINF = 1e18;
const string vowel = "aeiou";
int main() {
  int n;
  cin >> n;
  vector<string> a(n);
  map<pair<int, int>, vector<int> > cnt;
  for (int i = 0; i < int(n); i++) {
    cin >> a[i];
    int len = 0, last = 0;
    for (int j = 0; j < int((int)(a[i]).size()); j++) {
      int pos = vowel.find(a[i][j]);
      if (pos >= 0) len++, last = pos;
    }
    cnt[{len, last}].push_back(i);
  }
  vector<pair<int, int> > ans;
  map<int, vector<int> > rem;
  int res = 0;
  for (auto p : cnt) {
    for (int i = 0; i < int((int)(p.second).size() / 2); i++)
      ans.push_back({p.second[2 * i], p.second[2 * i + 1]}), res++;
    if ((int)(p.second).size() % 2)
      rem[p.first.first].push_back(p.second.back());
  }
  for (auto p : rem) {
    for (int i = 0; i < int((int)(p.second).size() / 2); i++)
      ans.push_back({p.second[2 * i], p.second[2 * i + 1]});
  }
  res = min(res, (int)(ans).size() / 2);
  cout << res << "\n";
  for (int i = 0; i < int(res); i++) {
    cout << a[ans[i + res].first] << " " << a[ans[i].first] << "\n";
    cout << a[ans[i + res].second] << " " << a[ans[i].second] << "\n";
  }
  return 0;
}
