#include <bits/stdc++.h>
using namespace std;
int n;
int ptr1n = 0, ptr1s = 0;
int ptr2n = 0;
vector<vector<vector<string>>> vec;
int cnt(const string& s) {
  int ret = 0;
  for (char i : s) {
    for (char j : {'a', 'e', 'i', 'o', 'u'}) {
      if (i == j) {
        ret++;
        break;
      }
    }
  }
  return ret;
}
char last(const string& s) {
  char last = -1;
  for (char i : s) {
    for (char j : {'a', 'e', 'i', 'o', 'u'}) {
      if (i == j) {
        last = i;
        break;
      }
    }
  }
  return last;
}
void push(const string& s) {
  int _cnt = cnt(s);
  int _last = last(s);
  if (_cnt >= vec.size()) {
    vec.resize(_cnt + 1, vector<vector<string>>(26));
  }
  vec[_cnt][_last - 'a'].push_back(s);
}
void add(int& a, int& b) {
  if (++b >= 26) {
    a++, b = 0;
  }
}
pair<string, string> same() {
  while (ptr1n < vec.size()) {
    if (vec[ptr1n][ptr1s].size() >= 2) {
      string _1 = vec[ptr1n][ptr1s].back();
      vec[ptr1n][ptr1s].pop_back();
      string _2 = vec[ptr1n][ptr1s].back();
      vec[ptr1n][ptr1s].pop_back();
      return make_pair(_1, _2);
    }
    add(ptr1n, ptr1s);
  }
  return make_pair("", "");
}
pair<string, string> unsame() {
  while (ptr2n < vec.size()) {
    int i = -1;
    for (int j = 0; j < 26; j++) {
      if (vec[ptr2n][j].size() % 2 != 0) {
        if (i == -1) {
          i = j;
        } else {
          string _1 = vec[ptr2n][i].back();
          vec[ptr2n][i].pop_back();
          string _2 = vec[ptr2n][j].back();
          vec[ptr2n][j].pop_back();
          return make_pair(_1, _2);
        }
      }
    }
    ptr2n++;
  }
  return same();
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) {
    string tmp;
    cin >> tmp;
    push(tmp);
  }
  vector<pair<pair<string, string>, pair<string, string>>> ans;
  while (1) {
    auto _1 = same();
    auto _2 = unsame();
    if (_1 != make_pair(string(""), string("")) &&
        _2 != make_pair(string(""), string(""))) {
      ans.push_back(make_pair(_2, _1));
    } else {
      break;
    }
  }
  cout << ans.size() << '\n';
  for (auto i : ans) {
    cout << i.first.first << ' ' << i.second.first << '\n'
         << i.first.second << ' ' << i.second.second << '\n';
  }
}
