#include <bits/stdc++.h>
int comp(const void *a, const void *b) { return *(int *)a - *(int *)b; }
int min(int a, int b) { return a < b ? a : b; }
int max(int a, int b) { return a > b ? a : b; }
char *last(char *a, int k) {
  int l = strlen(a) - 1;
  while (l >= 0 && k) {
    if (a[l] == 'a' || a[l] == 'e' || a[l] == 'i' || a[l] == 'o' || a[l] == 'u')
      k--;
    l--;
  }
  if (l < 0 && k) return "#";
  return &a[++l];
}
int n, k;
char a[4][10010], *ans;
int main() {
  scanf("%d %d\n", &n, &k);
  for (int j = 0; j < 4; j++) {
    scanf("%s", a[j]);
    strcpy(a[j], last(a[j], k));
    if (!strcmp(a[j], "#")) {
      printf("NO");
      return 0;
    }
  }
  if (!strcmp(a[0], a[2]) && !strcmp(a[1], a[3]) && !strcmp(a[0], a[1]))
    ans = "aaaa";
  else if (!strcmp(a[0], a[1]) && !strcmp(a[2], a[3]))
    ans = "aabb";
  else if (!strcmp(a[0], a[2]) && !strcmp(a[1], a[3]))
    ans = "abab";
  else if (!strcmp(a[0], a[3]) && !strcmp(a[1], a[2]))
    ans = "abba";
  else {
    printf("NO");
    return 0;
  }
  for (int i = 1; i < n; i++) {
    for (int j = 0; j < 4; j++) {
      scanf("%s", a[j]);
      strcpy(a[j], last(a[j], k));
      if (!strcmp(a[j], "#")) {
        printf("NO");
        return 0;
      }
    }
    if (!strcmp(a[0], a[2]) && !strcmp(a[1], a[3]) && !strcmp(a[0], a[1]) &&
        !strcmp(ans, "aaaa"))
      continue;
    if (!strcmp(a[0], a[1]) && !strcmp(a[2], a[3]) &&
        (!strcmp(ans, "aabb") || !strcmp(ans, "aaaa"))) {
      ans = "aabb";
      continue;
    }
    if (!strcmp(a[0], a[2]) && !strcmp(a[1], a[3]) &&
        (!strcmp(ans, "abab") || !strcmp(ans, "aaaa"))) {
      ans = "abab";
      continue;
    }
    if (!strcmp(a[0], a[3]) && !strcmp(a[1], a[2]) &&
        (!strcmp(ans, "abba") || !strcmp(ans, "aaaa"))) {
      ans = "abba";
      continue;
    }
    printf("NO");
    return 0;
  }
  printf("%s", ans);
  return 0;
}
