#include <bits/stdc++.h>
using namespace std;
bool v(char ch) {
  return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u';
}
int getP(const string &a, int k) {
  int r = a.size() - 1;
  int cnt = 0;
  while (r >= 0) {
    if (v(a[r])) cnt++;
    if (cnt == k) return r;
    r--;
  }
  return r;
}
int getType(const string &a, const string &b, const string &c, const string &d,
            int k) {
  int p1 = getP(a, k);
  int p2 = getP(b, k);
  int p3 = getP(c, k);
  int p4 = getP(d, k);
  if (p1 < 0 || p2 < 0 || p3 < 0 || p4 < 0) return 4;
  int res = 0;
  if (a.substr(p1, a.size() - p1) == b.substr(p2, b.size() - p2) &&
      c.substr(p3, c.size() - p3) == d.substr(p4, d.size() - p4))
    res += 1;
  if (a.substr(p1, a.size() - p1) == d.substr(p4, d.size() - p4) &&
      b.substr(p2, b.size() - p2) == c.substr(p3, c.size() - p3))
    res += 2;
  if (a.substr(p1, a.size() - p1) == c.substr(p3, c.size() - p3) &&
      b.substr(p2, b.size() - p2) == d.substr(p4, d.size() - p4))
    res += 3;
  if (res == 6) return 3;
  if (res >= 1 && res <= 3) return res - 1;
  return 4;
}
int main() {
  int n, k;
  cin >> n >> k;
  int numT[7] = {0};
  for (int i = 0; i < n; i++) {
    string a, b, c, d;
    cin >> a >> b >> c >> d;
    int r = getType(a, b, c, d, k);
    if (r == 4) {
      puts("NO");
      return 0;
    }
    numT[r]++;
  }
  string anss[] = {"aabb", "abba", "abab", "aaaa"};
  if (numT[3] == n)
    puts("aaaa");
  else {
    int c = (numT[0] != 0) + (numT[1] != 0) + (numT[2] != 0);
    if (c == 0 || c > 1)
      puts("NO");
    else {
      for (int i = 0; i < 4; i++) {
        if (numT[i]) {
          printf("%s", anss[i].c_str());
          return 0;
        }
      }
    }
  }
  return 0;
}
