![](https://velog.velcdn.com/images/jw3418/post/8881b867-5ef5-4a58-8543-38ed1baf6543/image.png)
![](https://velog.velcdn.com/images/jw3418/post/47073312-c199-444d-8a5f-1c638c7be78c/image.png)
- letter list를 오름차순으로 sorting
- 오름차순으로 dfs 순회
- len(visit) == L일 때, 모음 최소 하나, 자음 최소 두개 조건을 만족하는 경우에 print
import sys
tmp = list(map(int, sys.stdin.readline()[:-1].split(' '))); L = tmp[0]; C = tmp[1]
letter = sys.stdin.readline()[:-1].split(' ')
letter.sort()
visit = []; check = {'a', 'e', 'i', 'o', 'u'}
def dfs(flag):
if len(visit) == L:
cnt1 = 0; cnt2 = 0
for j in range(L):
if visit[j] in check:
cnt1 += 1
else:
cnt2 += 1
if cnt1 >= 1 and cnt2 >= 2:
print("".join(map(str, visit)))
return
for i in range(flag, C):
if letter[i] not in visit:
visit.append(letter[i])
dfs(i)
visit.pop()
dfs(0)