1759
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int l, c;
vector<char> v;
bool isM(char c) {
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
return true;
}
return false;
}
void dfs(int index, vector<char> result, bool visit[15], int m, int j) {
if (m + j == l) {
if (m >= 1 && j >= 2) {
for (int i = 0; i < result.size(); i++) {
cout << result[i];
}
cout << endl;
}
return;
}
for (int i = index + 1; i < v.size(); i++) {
if (!visit[i]) {
result.push_back(v[i]);
visit[i] = true;
if (isM(v[i])) {
dfs(i, result, visit, m + 1, j);
}
else {
dfs(i, result, visit, m, j + 1);
}
visit[i] = false;
result.pop_back();
}
}
}
int main() {
cin >> l >> c;
for (int i = 0; i < c; i++) {
char input;
cin >> input;
v.push_back(input);
}
sort(v.begin(), v.end());
for (int i = 0; i <= v.size() - l; i++) {
bool visit[15] = { false };
vector<char> result;
visit[i] = true;
result.push_back(v[i]);
if (isM(v[i])) {
dfs(i, result, visit, 1, 0);
}
else {
dfs(i, result, visit, 0, 1);
}
}
}