#include <bits/stdc++.h>
using namespace std;
using namespace std;
string a[100005];
bool s[100005];
int arr[100005];
int main() {
  std::ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  map<int, vector<int>> v;
  map<int, vector<int>> lv[5];
  char cv[5] = {'a', 'e', 'i', 'o', 'u'};
  int n;
  cin >> n;
  int i;
  int j;
  int k;
  for (i = 0; i < n; i++) {
    cin >> a[i];
    int v_num = 0;
    int last_index = -1;
    int m = a[i].length();
    for (j = 0; j < m; j++) {
      for (k = 0; k < 5; k++) {
        if (a[i][j] == cv[k]) {
          break;
        }
      }
      if (k < 5) {
        v_num++;
        last_index = k;
      }
    }
    if (v.find(v_num) == v.end()) {
      vector<int> tmp;
      tmp.push_back(i);
      v[v_num] = tmp;
    } else {
      v[v_num].push_back(i);
    }
    if (lv[last_index].find(v_num) == lv[last_index].end()) {
      vector<int> tmp;
      tmp.push_back(i);
      lv[last_index][v_num] = tmp;
    } else {
      lv[last_index][v_num].push_back(i);
    }
  }
  int top = 0;
  for (i = 0; i < 5; i++) {
    map<int, vector<int>>::iterator it;
    for (it = lv[i].begin(); it != lv[i].end(); it++) {
      for (j = 0; j < (it->second).size(); j += 2) {
        if (j + 1 < (it->second).size()) {
          arr[top++] = (it->second)[j];
          s[(it->second)[j]] = true;
          arr[top++] = (it->second)[j + 1];
          s[(it->second)[j + 1]] = true;
        }
      }
    }
  }
  int d = top / 2;
  map<int, vector<int>>::iterator it;
  for (it = v.begin(); it != v.end(); it++) {
    int nLast = -1;
    for (j = 0; j < (it->second).size(); j++) {
      if (s[(it->second)[j]] == false) {
        if (nLast == -1) {
          nLast = (it->second)[j];
        } else {
          arr[top++] = nLast;
          arr[top++] = (it->second)[j];
          nLast = -1;
        }
      }
    }
  }
  k = top / 2;
  int ans = min(k / 2, d);
  cout << ans << endl;
  for (i = 0; i < ans; i++) {
    cout << a[arr[top - i * 2 - 1]] << " " << a[arr[i * 2]] << endl;
    cout << a[arr[top - i * 2 - 2]] << " " << a[arr[i * 2 + 1]] << endl;
  }
  return 0;
}
