#P16698. [ICPC 2017 Jakarta R]XEN 3166

[ICPC 2017 Jakarta R]XEN 3166

题目描述

世界上有 NN 个国家,编号为 11NN

每个国家都有一个国家名称和一个国家代码,二者都用字符串表示。

所有字符串只包含大写英文字母 AZ,并且任意两个国家的名称都不同。

广泛使用的国家代码标准 ISO 3166 并不总是保持字典序。例如:

  • INDIA 的代码是 IN
  • INDONESIA 的代码是 ID

虽然 INDIA 的国家名称在字典序中小于 INDONESIA,但代码 IN 却大于 ID

Xenia 因此设计了一套新的标准 XEN 3166

每个国家代码必须满足以下规则:

  1. 国家代码是国家名称的一个子序列;
  2. 国家代码的第一个字符与国家名称的第一个字符相同;
  3. 国家代码长度恰好为 KK
  4. 国家名称之间的字典序关系必须与国家代码之间完全一致。

形式化地,若国家名称 SS 的代码为 SS',国家名称 TT 的代码为 TT',则必须满足:

S<TS<T.S<T \quad\Longleftrightarrow\quad S'<T'.

字符串 T=T1T2TTT=T_1T_2\cdots T_{|T|} 是字符串 S=S1S2SSS=S_1S_2\cdots S_{|S|} 的子序列,当且仅当存在下标:

1u1<u2<<uTS,1\le u_1<u_2<\cdots<u_{|T|}\le|S|,

满足:

Sui=Ti(1iT).S_{u_i}=T_i \qquad(1\le i\le|T|).

给定所有国家名称,请为每个国家分配一个符合 XEN 3166 规则的国家代码,或判断无解。

输入格式

第一行包含两个整数 N,KN,K

1N1000,1\le N\le1000, 1K200,1\le K\le200,

分别表示国家数量和国家代码长度。

接下来 NN 行,每行包含一个仅由大写英文字母组成的字符串,表示对应国家的名称。

每个国家名称长度满足:

1Si200000.1\le|S_i|\le200\,000.

所有国家名称长度之和不超过:

200000.200\,000.

保证任意两个国家名称不同。

输出格式

如果存在合法分配方案,首先输出:

YES

随后输出 NN 行。第 ii 行输出第 ii 个国家的国家代码。

如果有多种合法方案,可以输出任意一种。

如果不存在合法分配方案,只输出:

NO

样例 1

输入

2 2
INDIA
INDONESIA

一种合法输出

YES
ID
IN

样例 2

输入

3 2
IBAA
IAAA
IAAC

输出

NO