func_code_string: #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 );     }   }   