#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 2;
vector<int> v[5][maxn];
vector<int> pans;
vector<pair<int, int>> ans;
vector<pair<int, int>> l;
string s[maxn];
char c[] = {'a', 'e', 'i', 'o', 'u'};
int n;
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> s[i];
  }
  for (int i = 0; i < n; i++) {
    int res = 0;
    int e = 0;
    for (int j = 0; j < s[i].size(); j++) {
      for (int u = 0; u < 5; u++) {
        if (s[i][j] == c[u]) {
          res++;
          e = u;
        }
      }
    }
    if (res == 0) {
      pans.push_back(i);
    } else {
      v[e][res].push_back(i);
    }
  }
  for (int i = 0; i < 5; i++) {
    for (int j = 1; j < (int)1e6; j++) {
      for (int h = 0; h + 1 < v[i][j].size();) {
        ans.push_back(make_pair(v[i][j][v[i][j].size() - 1],
                                v[i][j][v[i][j].size() - 2]));
        v[i][j].pop_back();
        v[i][j].pop_back();
      }
    }
  }
  for (int j = 1; j < (int)1e6; j++) {
    int w = -1;
    int h = -1;
    for (int i = 0; i < 5; i++) {
      for (int d = 0; d < v[i][j].size(); d++) {
        if (w != -1) {
          h = v[i][j][d];
        } else {
          w = v[i][j][d];
        }
        if (w != -1 && h != -1) {
          l.push_back({w, h});
          w = -1;
          h = -1;
        }
      }
    }
  }
  if ((int)l.size() >= (int)ans.size()) {
    cout << (int)ans.size() + (int)pans.size() / 4 << endl;
    for (int i = 0; i < ans.size(); i++) {
      cout << s[l[i].first] << " " << s[ans[i].first] << endl
           << s[l[i].second] << " " << s[ans[i].second] << endl;
    }
    for (int i = 0; i + 3 < pans.size(); i += 4) {
      cout << s[pans[i]] << " " << s[pans[i + 1]] << endl
           << s[pans[i + 2]] << " " << s[pans[i + 3]] << endl;
    }
  } else if ((int)l.size() < (int)ans.size()) {
    cout << (int)l.size() +
                min(((int)ans.size() - (int)l.size()), (int)pans.size() / 2) +
                max(((int)ans.size() - (int)l.size() - (int)pans.size() / 2) /
                        2,
                    ((int)pans.size() / 2 - ((int)ans.size() - (int)l.size())) /
                        4)
         << endl;
    int h = 0;
    for (int i = 0; i < l.size(); i++) {
      cout << s[l[i].first] << " " << s[ans[h].first] << endl
           << s[l[i].second] << " " << s[ans[h].second] << endl;
      h++;
    }
    int i;
    for (i = 0; i + 1 < pans.size() && h < ans.size(); i++) {
      cout << s[pans[i]] << " " << s[ans[h].first] << endl
           << s[pans[i + 1]] << " " << s[ans[h].second] << endl;
      h++;
    }
    if (h == ans.size()) {
      for (; i + 3 < pans.size(); i += 4) {
        cout << s[pans[i]] << " " << s[pans[i + 1]] << endl
             << s[pans[i + 2]] << " " << s[pans[i + 3]] << endl;
      }
    } else {
      for (; h + 1 < ans.size(); h += 2) {
        cout << s[ans[h].first] << " " << s[ans[h + 1].first] << endl
             << s[ans[h].second] << " " << s[ans[h + 1].second] << endl;
      }
    }
  }
}
