#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 1000 * 1000 + 5, MAX_V = 5 + 5;
vector<char> vow = {'a', 'e', 'o', 'i', 'u'};
vector<string> v1, v2, vec[MAX_N][MAX_V];
void read_input() {
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    int cnt = 0, last = 0;
    for (auto i : s) {
      auto it = find(vow.begin(), vow.end(), i);
      if (it != vow.end()) cnt++, last = it - vow.begin();
    }
    vec[cnt][last].push_back(s);
  }
}
void update() {
  v1.push_back(v2.back());
  v2.pop_back();
}
void solve() {
  for (int i = 0; i < MAX_N; i++) {
    for (int j = 0; j < MAX_V; j++) {
      for (auto s : vec[i][j]) v2.push_back(s);
      if (v2.size() & 1) update();
    }
    if (v1.size() & 1) v1.pop_back();
  }
  if (v1.size() > v2.size()) v1.resize(v2.size());
  if (v1.size() % 4 != v2.size() % 4) v2.pop_back(), v2.pop_back();
  while (v1.size() < v2.size()) update(), update();
}
void print_ouput() {
  cout << v1.size() / 2 << endl;
  for (int i = 0; i < (int)v1.size(); i++)
    cout << v1[i] << ' ' << v2[i] << endl;
}
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  read_input();
  solve();
  print_ouput();
}
