단어 추측 게임

시간 제한2초메모리 제한256 MB

문제

두 사람이 하는 "단어 추측 게임(GMW, Guess My Word)"을 소개한다. 두 참가자를 A와 B라고 하자.

  • A는 두 사람이 함께 알고 있는 말뭉치(단어 목록)에서 단어 하나를 마음속으로 고른다. 고른 단어의 길이가 $n$이라면, A는 종이에 수평 선분 $n$개를 한 줄로 그려 각 글자가 들어갈 자리를 표시하고, 종이를 두 사람 사이에 둔다.
  • 이제 B는 글자를 하나씩 추측하여 단어를 맞혀야 한다. 각 단계에서 B는 글자 하나를 골라 A에게 말한다.
    • 그 글자가 단어에 들어 있으면, A는 그 글자를 알맞은 자리(선분 위)에 적는다. 이렇게 하여 단어의 모든 글자가 채워지면 B가 이긴다.
    • 그 글자가 단어에 들어 있지 않으면, A는 아직 비어 있는 가장 왼쪽 선분의 아래에 그 글자를 적는다. 선분 아래에는 이런 자리가 모두 $n$개 있다. 만약 $n$개의 자리가 이미 모두 차 있어서 방금 말한 틀린 글자를 적을 곳이 어디에도 없다면, 그 순간 B가 지고 A가 이긴다. 이때 A는 자신이 고른 단어를 B에게 밝혀야 한다.

정리하면, B는 틀린 글자를 최대 $n$개까지 적을 수 있으며, 이미 $n$개를 적은 뒤에 또 틀린 글자를 말하는 순간(즉 $n+1$번째 틀린 추측을 하는 순간) B가 진다. 반대로 틀린 글자를 $n$개까지 말했더라도 남은 자리를 올바른 글자로 모두 채워 단어를 완성하면 B가 이길 수 있다.

그런데 A는 단어를 어디에도 적어 두지 않고 머릿속으로만 생각하기 때문에, 게임 도중에 지금까지 자신이 한 대답과 모순되지 않는 다른 단어로 몰래 바꿀 수 있다. 다시 말해 A는 특정 단어 하나에 얽매이지 않고, 지금까지의 대답과 일관된 말뭉치 속 단어라면 무엇이든 정답인 것처럼 대답을 이어 갈 수 있다. 다만 게임이 끝날 때 A가 이겼다면, A는 지금까지 한 모든 대답과 일치하면서 말뭉치에 실제로 존재하는 단어 하나를 정답으로 제시할 수 있어야 한다.

이렇게 A가 단어를 바꿀 수 있기 때문에, 말뭉치가 잘 짜여 있으면 B가 어떻게 추측하더라도 A가 항상 이길 수 있는 경우가 생긴다. 예를 들어 두 글자짜리 단어 ME, MD, DE, ED, AS, IS, AI, SI로만 이루어진 말뭉치라면, B가 어떤 글자를 어떤 순서로 고르더라도 A는 언제나 이길 수 있다.

여러 개의 말뭉치가 주어진다. 각 말뭉치에 대해, B가 어떤 글자를 어떤 순서로 고르더라도 A가 반드시 이길 수 있는지를 서로 독립적으로 판단하여라.

입력

입력은 서로 독립적으로 처리하는 여러 개의 말뭉치로 이루어진다.

첫 번째 줄에 말뭉치의 개수 $C$가 주어진다. $C$는 $1$ 이상 $20$ 이하의 정수이다. 그다음 $C$개의 말뭉치가 차례로 주어진다.

각 말뭉치는 먼저 단어의 개수 $K$가 한 줄에 주어지고, 이어서 $K$개의 서로 다른 단어가 주어진다. 단어들은 공백, 탭, 줄 바꿈 중 하나 이상으로 구분된다. 모든 단어는 영어 대문자로만 이루어지며, 각 단어의 길이는 항상 $7$보다 작다(즉 $1$ 이상 $6$ 이하). 또한 한 단어 안에서는 같은 글자가 두 번 이상 나타나지 않는다. 즉 한 단어를 이루는 글자들은 모두 서로 다르다.

입력 파일의 크기는 500KB보다 작다. 어떤 말뭉치이든 단어의 개수는 1,000개를 넘지 않는다.

출력

각 말뭉치마다, B가 어떤 글자들을 어떤 순서로 고르더라도 A가 항상 이길 수 있는 전략이 존재하면 "Yes"를, 그렇지 않으면 "No"를 한 줄에 출력한다.

A가 이기는 게임이라면, 마지막에 A가 정답으로 제시하는 단어는 반드시 말뭉치에 실제로 존재하는 단어여야 하며, 게임 동안 A가 한 모든 대답과 일치해야 한다.