[COCI2016-2017#1] Cezar

题目描述

Mirko 想对 $n$ 个单词进行加密。加密过程是这样的: 1. 选择一个英文字母表的排列作为密钥。 2. 将单词中的 `a` 替换为密钥中的第一个字母,`b` 替换为密钥中的第二个字母……以此类推。 例如,以 `qwertyuiopasdfghjklzxcvbnm` 作为密钥对 `cezar` 加密后,将得到 `etmqk`。 他希望,将所有单词加密并按字典序升序排列后,最初的第 $a_i$ 个单词位于第 $i$ 位。请你判断,这能否实现。如果能,请给出任意一种可行的密钥。

输入输出格式

输入格式


第一行一个整数 $n$。 接下来 $n$ 行,每行一个字符串,表示待加密的单词。 最后一行 $n$ 个整数,表示 $a_i$。

输出格式


**本题使用 Special Judge**。 如果 Mirko 的要求不能实现,输出 `NE`。 否则,输出 `DA`。接下来一行输出任意一种可行的密钥。

输入输出样例

输入样例 #1

2
ab
bc
2 1 

输出样例 #1

DA
bacdefghijklmnopqrstuvwxyz 

输入样例 #2

3
abc
bcd
add
1 2 3 

输出样例 #2

NE 

输入样例 #3

3
bbb
ccc
ddd
2 3 1 

输出样例 #3

DA
adbcefghijklmnopqrstuvwxyz 

说明

#### 【样例解释】 **样例 1 解释** 以 `bacdefghijklmnopqrstuvwxyz` 为密钥加密后,得到: - `ba` - `ac` 字典序升序排列后,得到: - `ac` - `ba` 原先的第一个单词在第二位,第二个单词在第一位。符合要求。 **样例 3 解释** 以 `adbcefghijklmnopqrstuvwxyz` 为密钥加密后,得到: - `ddd` - `bbb` - `ccc` 字典序升序排列后,得到: - `bbb` - `ddd` - `ccc` 原先的第一个单词在第二位,第二个单词在第三位,第三个单词在第一位。符合要求。 --- #### 数据规模与约定 对于 $100\%$ 的数据,$2\le n\le 100$,$1 \leq a_i \leq n$。 所有单词的长度不超过 $100$,且只包含小写字母。 ------------ #### 说明 **题目译自 [COCI2016-2017](https://hsin.hr/coci/archive/2016_2017/) [CONTEST #1](https://hsin.hr/coci/archive/2016_2017/contest1_tasks.pdf) _T3 Cezar_**。