#include <bits/stdc++.h>
using namespace std;
map<long long, string> vov[5], temp;
list<string> l, l2;
void decide(string s) {
  long long cnt = 0;
  for (long long i = 0; i < s.size(); i++) {
    char x = s[s.size() - i - 1];
    if (x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u') cnt++;
  }
  for (long long i = 0; i < s.size(); i++) {
    char x = s[s.size() - i - 1];
    if (x == 'a') {
      if (vov[0][cnt] != "") {
        l.push_back(vov[0][cnt]);
        l.push_back(s);
        vov[0][cnt] = "";
      } else
        vov[0][cnt] = s;
      break;
    } else if (x == 'e') {
      if (vov[1][cnt] != "") {
        l.push_back(vov[1][cnt]);
        l.push_back(s);
        vov[1][cnt] = "";
      } else
        vov[1][cnt] = s;
      break;
    } else if (x == 'i') {
      if (vov[2][cnt] != "") {
        l.push_back(vov[2][cnt]);
        l.push_back(s);
        vov[2][cnt] = "";
      } else
        vov[2][cnt] = s;
      break;
    } else if (x == 'o') {
      if (vov[3][cnt] != "") {
        l.push_back(vov[3][cnt]);
        l.push_back(s);
        vov[3][cnt] = "";
      } else
        vov[3][cnt] = s;
      break;
    } else if (x == 'u') {
      if (vov[4][cnt] != "") {
        l.push_back(vov[4][cnt]);
        l.push_back(s);
        vov[4][cnt] = "";
      } else
        vov[4][cnt] = s;
      break;
    }
  }
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  {
    long long n;
    cin >> n;
    string s[n];
    for (long long i = 0; i < n; i++) cin >> s[i];
    list<string> ans;
    for (long long i = 0; i < n; i++) decide(s[i]);
    for (long long i = 0; i < 5; i++)
      for (auto j : vov[i]) {
        if (j.second != "")
          if (temp[j.first] != "") {
            l2.push_back(j.second);
            l2.push_back(temp[j.first]);
            temp[j.first] = "";
          } else {
            temp[j.first] = j.second;
          }
      }
    while (l.size()) {
      string aa;
      if (l2.size()) {
        aa = l2.front() + " ";
        l2.pop_front();
        aa += l.front() + "\n";
        l.pop_front();
        aa += l2.front() + " ";
        l2.pop_front();
        aa += l.front() + "\n";
        l.pop_front();
      } else if (l.size() > 3) {
        aa = l.back() + " ";
        l.pop_back();
        aa += l.front() + "\n";
        l.pop_front();
        aa += l.back() + " ";
        l.pop_back();
        aa += l.front() + "\n";
        l.pop_front();
      } else
        break;
      ans.push_front(aa);
    }
    cout << ans.size() << '\n';
    for (auto i : ans) cout << i;
  }
  cerr << "[Execution : " << (1.0 * clock()) / CLOCKS_PER_SEC << "s]\n";
  return 0;
}
