XEN 3166

각 나라에 첫 글자로 시작하는 길이 K의 부분열 코드를 부여해 코드 순서가 이름 사전 순서와 일치하도록 하거나 불가능을 판정한다.

어려움8그리디문자열정렬면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

이 세계에는 1부터 N까지 번호가 붙은 N개의 나라가 있다. 각 나라는 나라 이름과 나라 코드를 가진다. 두 값은 모두 문자열이며, 서로 다른 두 나라가 같은 이름을 가질 수는 없다. 이 문제에서는 모든 문자열이 대문자 알파벳(A-Z)으로만 이루어져 있다고 가정한다.

널리 알려진 코드 표준 중 하나는 ISO가 정한 ISO 3166이다. Xenia는 이 표준에서 순서가 어긋나는 경우를 발견했다. 예를 들어 "INDIA"의 코드는 "IN"이고 "INDONESIA"의 코드는 "ID"이다. 사전식 순서에서는 "INDONESIA"가 "INDIA"보다 뒤에 오지만, 코드 순서에서는 "IN"이 "ID"보다 뒤에 온다.

이 점을 바로잡기 위해 Xenia는 XEN 3166이라는 자체 표준을 만들었다. 규칙은 다음과 같다.

  • 각 나라의 코드는 그 나라 이름의 부분 수열이다.
  • 각 나라의 코드 첫 글자는 그 나라 이름 첫 글자와 같다.
  • 각 나라의 코드 길이는 정확히 K이다.
  • 이름이 S인 나라의 코드가 S'이고 이름이 T인 나라의 코드가 T'일 때, S가 T보다 사전식으로 작을 때 정확히 그때만 S'도 T'보다 사전식으로 작다.

문자열 T=T1T2TTT = T_1T_2\ldots T_{|T|}가 문자열 S=S1S2SSS = S_1S_2\ldots S_{|S|}의 부분 수열이라는 것은 1u1<u2<<uTS1 \le u_1 < u_2 < \cdots < u_{|T|} \le |S|를 만족하는 정수 수열 u1,u2,,uTu_1, u_2, \ldots, u_{|T|}가 존재하고 모든 1iT1 \le i \le |T|에 대해 Sui=TiS_{u_i} = T_i가 성립한다는 뜻이다. 예를 들어 "ID", "IN", "IND"는 "INDIA"의 부분 수열이지만 "IDN", "INN", "Z"는 "INDIA"의 부분 수열이 아니다.

문자열 S=S1S2SSS = S_1S_2\ldots S_{|S|}가 문자열 T=T1T2TTT = T_1T_2\ldots T_{|T|}보다 사전식으로 작다는 것은 다음 중 적어도 하나가 성립한다는 뜻이다.

  • S<T|S| < |T|이고 모든 1iS1 \le i \le |S|에 대해 Si=TiS_i = T_i이다.
  • Si<TiS_i < T_i이고 모든 1j<i1 \le j < i에 대해 Sj=TjS_j = T_j인 인덱스 ii가 존재한다.

예를 들어 나라가 두 개뿐이고 K=2K = 2이며 이름이 "INDIA"와 "INDONESIA"인 경우를 보자. 규칙을 만족하는 배정으로는 다음이 있다.

  • "INDIA"에 "ID", "INDONESIA"에 "IN"
  • "INDIA"에 "IA", "INDONESIA"에 "ID"
  • "INDIA"에 "II", "INDONESIA"에 "IO"

N, K와 나라 이름 목록이 주어진다. XEN 3166 규칙을 만족하도록 각 나라에 코드를 배정하거나, 그런 배정이 불가능하다고 판단하라.

입력

첫째 줄에 나라 수와 코드 길이를 나타내는 두 정수 N, K가 주어진다(1N10001 \le N \le 1000, 1K2001 \le K \le 200). 다음 N개의 줄에는 나라 이름이 한 줄에 하나씩 주어진다. 각 이름은 길이가 1 이상 200000 이하인 대문자 알파벳(A-Z) 문자열이다. 모든 이름 길이의 합은 200000을 넘지 않는다. 서로 다른 두 나라가 같은 이름을 가지는 일은 없다.

출력

XEN 3166 규칙을 만족하는 코드 배정이 가능하면 첫째 줄에 "YES"를 출력한다(따옴표는 제외). 다음 N개의 줄에는 각 나라의 코드를 입력 순서대로 한 줄에 하나씩 출력한다. i번째 줄은 i번째 나라의 코드이다. 가능한 배정이 여러 개이면 그 중 아무거나 출력해도 된다.

그런 배정이 불가능하면 한 줄에 "NO"만 출력한다(따옴표는 제외).

힌트

첫 번째 샘플은 본문에 나온 "INDIA"와 "INDONESIA" 경우와 같다.