#include <bits/stdc++.h>
using namespace std;
string second[2502][4];
int n, k;
bool isvowel(char ch) {
  return (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u');
}
string sub(string &a) {
  int cnt = 0;
  for (int i = (int)a.length() - 1; i >= 0; --i) {
    if (isvowel(a[i])) {
      cnt++;
      if (cnt == k) return a.substr(i);
    }
  }
}
bool ok(string second) {
  int cnt = 0;
  for (int i = 0; i < second.length(); ++i)
    if (isvowel(second[i])) cnt++;
  if (cnt < k) return false;
  return true;
}
bool aabb() {
  for (int i = 0; i < n; ++i) {
    if (!ok(second[i][0]) || !ok(second[i][1]) || !ok(second[i][2]) ||
        !ok(second[i][3]))
      return false;
    if (!(sub(second[i][0]) == sub(second[i][1]) &&
          sub(second[i][2]) == sub(second[i][3])))
      return false;
  }
  return true;
}
bool abab() {
  for (int i = 0; i < n; ++i) {
    if (!ok(second[i][0]) || !ok(second[i][1]) || !ok(second[i][2]) ||
        !ok(second[i][3]))
      return false;
    if (!(sub(second[i][0]) == sub(second[i][2]) &&
          sub(second[i][1]) == sub(second[i][3])))
      return false;
  }
  return true;
}
bool abba() {
  for (int i = 0; i < n; ++i) {
    if (!ok(second[i][0]) || !ok(second[i][1]) || !ok(second[i][2]) ||
        !ok(second[i][3]))
      return false;
    if (!(sub(second[i][0]) == sub(second[i][3]) &&
          sub(second[i][1]) == sub(second[i][2])))
      return false;
  }
  return true;
}
int main() {
  scanf("%d%d\n", &n, &k);
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < 4; ++j) cin >> second[i][j];
  }
  string ans = "";
  int cnt = 0;
  if (aabb()) {
    cnt++;
    ans = "aabb";
  }
  if (abab()) {
    cnt++;
    ans = "abab";
  }
  if (abba()) {
    cnt++;
    ans = "abba";
  }
  if (cnt == 3) {
    puts("aaaa");
    return 0;
  }
  if (cnt == 0) {
    puts("NO");
    return 0;
  }
  cout << ans << endl;
  return 0;
}
