문제
피노키오는 영어를 공부하기 위해 4개의 나무 블록 세트를 준비했다. 각 블록은 육면체로 각 면에 알파벳 문자가 하나씩 적혀있다.
피노키오는 블록 상단에 있는 글자가 단어의 철자가 되도록 블록을 배열하여 철자를 배우고 있다.
4개 블록에 있는 문자들과 피노키오가 원하는 단어 목록이 주어지면 해당 목록에서 블록을 사용하여 성공적으로 만들 수 있는 단어를 확인하는 프로그램을 작성하시오.
입력
입력의 첫 번째 줄에는 피노키오가 만들기 원하는 단어 수인 N(1≤N≤10)이 입력됩니다.
다음 네 줄에는 각각 피노키오의 블록 중 하나의 6면에 있는 문자를 나타내는 6개의 대문자 문자열이 입력됩니다.
다음 N 줄에는 피노키오가 만들기 원하는 N 단어가 입력됩니다. 각각은 1~4개의 대문자로 구성됩니다.
출력
피노키오의 목록에 있는 각 단어에 대해 단어를 만들 수 있으면 YES를 출력하고 그렇지 않으면 NO를 출력합니다.
예제1
입력
6
MOOOOO
OOOOOO
ABCDEF
UVWXYZ
COW
MOO
ZOO
MOVE
CODE
FARM
출력
YES
NO
YES
YES
NO
NO
이 예에서 피노키오는 COW, ZOO 및 MOVE를 만들 수 있습니다.
슬프게도 피노키오는 M을 포함하는 유일한 블록을 O에 동시에 사용할 수 없기 때문에 MOO의 철자를 사용할 수 없습니다.
피노키오는 문자 R을 포함하는 블록이 없기 때문에 FARM의 만들 수 없습니다.
피노키오는 C, D, E가 같은 블록에 속해 있기 때문에 CODE의 만들 수 없습니다.
출처
USACO 2022 February Bronze