시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 21 8 3 20.000%

문제

동일이는 어느 날 혼자서 할 수 있는 재미있는 놀이 하나를 생각해냈다.

이 놀이는 N개의 알파벳 소문자로 이루어진 문자열 하나로 시작된다.

동일이는 이 문자열의 임의의 두 글자를 서로 바꿀 수 있다. 이 행동은 0번 혹은 그 이상 원하는 할 수 있다.

목표는 사전순으로 가장 앞선 문자열을 만드는 것이다.

하지만 몇 번 게임을 하던 동일이는 아무래도 게임이 너무 쉽다고 생각하여 규칙 하나를 추가했다.

결과물이 될 문자열의 각 위치마다, 그 위치에 올 수 있는 문자를 정해 둔다.

예시는 다음과 같다.

  • 첫 글자는 a 또는 b가 되어야 한다.
  • 두 번째 글자는 b 또는 c가 되어야 한다.

이 규칙은 최종 결과물이 될 문자열에만 성립하며, 놀이 도중 만들어지는 문자열은 위의 규칙을 따르지 않아도 상관없다.

위의 규칙을 추가하자 놀이가 너무 어려워졌다.

동일이를 도와 규칙을 잘 지키면서 사전순으로 가장 앞서는 문자열이 무엇인지 찾아주도록 하자.

입력

첫 줄에 테스트 케이스의 수 T가 주어진다. ( 1 ≤ T ≤ 100 )

각 테스트 케이스의 첫 줄엔 놀이에 사용할 초기 문자열 S가 주어진다.

문자열은 N개의 알파벳 소문자로 이루어져 있다. ( 1 ≤ N ≤ 100 )

이어 N줄에 걸쳐 문자열 Ci가 주어진다. Ci는 Li개의 문자를 포함하며, 결과물의 i번째 글자에 올 수 있는 문자들의 목록이다. ( 1 ≤ Li ≤ 5 )

Ci에 등장하는 모든 문자는 초기 문자열 S에 최소한 한 번 이상 등장한다.

출력

각 테스트 케이스마다, 규칙을 지키며 만들 수 있는 사전순으로 가장 앞선 문자열을 출력한다. 만약 규칙대로 만들 수 있는 문자열이 존재하지 않는다면 NO SOLUTION을 출력한다.

예제 입력

2
abcde
abcde
a
abcde
abcde
abcde
abcde
ab
ab
ab
abcde
abcde

예제 출력

bacde
NO SOLUTION

힌트