#include <bits/stdc++.h>
using namespace std;
char a[5][6] = {"aabb", "abab", "abba", "aaaa"};
char s[5][10005];
bool f[5];
int find(char s[], int k) {
  int p1 = -1;
  int len = strlen(s);
  int cnt = 0;
  for (int i = len - 1; i >= 0; i--) {
    if (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u')
      cnt++;
    if (cnt == k) return i;
  }
  return -1;
}
bool check(char s[], char t[], int k) {
  int p = find(s, k), q = find(t, k);
  if (p == -1) return false;
  if (q == -1) return false;
  int l1 = strlen(s), l2 = strlen(t);
  if (l1 - p != l2 - q) return false;
  int j = q;
  for (int i = p; i < l1; i++) {
    if (s[i] == t[j])
      j++;
    else
      return false;
  }
  return true;
}
int main() {
  int n, k;
  while (scanf("%d%d", &n, &k) > 0) {
    memset(f, false, sizeof(f));
    for (int i = 1; i <= n; i++) {
      for (int j = 0; j < 4; j++) scanf("%s", s[j]);
      if (!check(s[0], s[1], k)) {
        f[0] = true;
        f[3] = true;
      }
      if (!check(s[2], s[3], k)) {
        f[0] = true;
        f[3] = true;
      }
      if (!check(s[0], s[2], k)) {
        f[1] = true;
        f[3] = true;
      }
      if (!check(s[1], s[3], k)) {
        f[1] = true;
        f[3] = true;
      }
      if (!check(s[0], s[3], k)) {
        f[2] = true;
        f[3] = true;
      }
      if (!check(s[2], s[1], k)) {
        f[2] = true;
        f[3] = true;
      }
    }
    bool sol = false;
    if (!f[0] && !f[1] && !f[2]) {
      puts("aaaa");
      continue;
    }
    for (int i = 2; i >= 0; i--) {
      if (!f[i]) {
        puts(a[i]);
        sol = true;
        break;
      }
    }
    if (!sol) puts("NO");
  }
}
