#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  unordered_map<int, unordered_map<char, vector<string>>> words;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    char vowel = '\0';
    int count = 0;
    for (int j = 0; j < s.length(); j++)
      if (s[j] == 'a' || s[j] == 'e' || s[j] == 'o' || s[j] == 'i' ||
          s[j] == 'u') {
        vowel = s[j];
        count++;
      }
    words[count][vowel].push_back(s);
  }
  vector<pair<string, string>> full;
  vector<pair<string, string>> semi;
  vector<string> unpaired;
  for (auto x : words) {
    for (auto y : x.second) {
      int size = y.second.size();
      if (size % 2 != 0) {
        unpaired.push_back(y.second.back());
      }
      if (size > 1)
        for (int i = 0; i < size && i + 1 < size; i += 2) {
          full.push_back(make_pair(y.second[i], y.second[i + 1]));
        }
    }
    for (int i = 0; i < unpaired.size() && i + 1 < unpaired.size(); i += 2) {
      semi.push_back(make_pair(unpaired[i], unpaired[i + 1]));
    }
    unpaired.clear();
  }
  int i = 0;
  int r = 0;
  string ans = "";
  for (; i < semi.size() && i < full.size(); i++) {
    r++;
    ans += semi[i].first + " " + full[i].first + "\n" + semi[i].second + " " +
           full[i].second + "\n";
  }
  for (; i + 1 < full.size(); i += 2) {
    r++;
    ans += full[i].first + " " + full[i + 1].first + "\n" + full[i].second +
           " " + full[i + 1].second + "\n";
  }
  cout << r << "\n";
  cout << ans;
}
