package P1759;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static int L;
static int C;
static char[] candidate;
static boolean[] visited;
static int depth;
public static void main(String[] args) throws FileNotFoundException {
System.setIn(new FileInputStream("src/P1759/input.txt"));
Scanner scanner = new Scanner(System.in);
L = scanner.nextInt();
C = scanner.nextInt();
candidate = new char[C];
for (int i=0;i<C;i++){
candidate[i] = scanner.next().charAt(0);
}
Arrays.sort(candidate);
visited = new boolean[C];
depth = 0;
for (int i=0;i<C;i++){
if (candidate[i]=='a'||candidate[i]=='e'||candidate[i]=='i'||candidate[i]=='o'||candidate[i]=='u'){
// -> 모음인 경우
dfs(i, 1, 0);
} else {
// 5. 간다 -> 자음인 경우 : parameter or static var
dfs(i, 0, 1);
}
}
}
public static void dfs(int index, int mo, int za){
// 1. 체크인
visited[index] = true;
depth++;
// 2. 목적지인가 -> L개가 되었는가 -> 자음 2개, 모음 1개 이상
if (depth == L){
if (mo >= 1 && za >= 2){
for (int i=0;i<C;i++){
if (visited[i]){
System.out.print(candidate[i]);
}
}
System.out.println();
}
} else {
// 3. 연결된 곳을 순회 -> 내 다음 알파벳
for (int i=index+1;i<C;i++){
// 4. 가능한가
if (candidate[i]=='a'||candidate[i]=='e'||candidate[i]=='i'||candidate[i]=='o'||candidate[i]=='u'){
// -> 모음인 경우
dfs(i, mo+1, za);
} else {
// 5. 간다 -> 자음인 경우 : parameter or static var
dfs(i, mo, za+1);
}
}
}
// 6. 체크아웃
visited[index] = false;
depth--;
}
}