Diana 是巴达维亚正宗名菜馆(Batavian Authentic Prestigious Cuisine)的主厨。所有订单都记录在中央电脑中,但为了组织厨房的工作,每个点购的单品也会打印在单独的小票上。在每张小票的背面,Diana 会写上对应的桌号,这样服务员就可以轻松地查看他们需要把食物送到哪里。当一个小票对应的菜品完成后,Diana 会把它钉在板上。当然,可能会有重复的小票,因为一张桌子可能会多次点购同一个单品。
小票让 Diana 能够监督厨房的运作。Unsplash 授权,作者 Daniel Bradley
服务进行到一半时,一位不满的食客抱怨道:“我们已经等了几个小时了,但到目前为止我们只上了番茄汤!能请你们快点吗?”Diana 必须立即处理这个问题,因为餐馆的声誉危在旦夕!然而,在过去,一些顾客为了要求加急服务而并不诚实。因此,在 Diana 指示厨房员工之前,必须先核实这一投诉。
由于板子总是保持最新状态,核实工作就是检查相关的小票。设 $t$ 和 $m$ 分别是描述投诉的桌号和菜单单品。Diana 试图验证以下声明:“所有钉在板上的桌号为 $t$ 的小票都对应菜单单品 $m$。”特别地,如果桌号为 $t$ 没有已完成的小票,Diana 认为该声明为真——顾客可能说错了,但他们当然值得额外的关注!
不幸的是,在板上,每张小票只有一面是可见的(要么是菜单单品,要么是桌号),而 Diana 没有时间去翻看数百张小票。然而,通过与中央电脑进行交叉比对,可能可以安全地忽略某些小票。帮助 Diana 确定需要翻转的钉在板上的小票的最小集合。或者,你能在不翻转任何小票的情况下证明或证伪该声明吗?你必须在 Diana 开始翻转之前决定应该翻转哪些小票——她太累了,无法在现场进行推导。
输入格式
输入包含以下内容:
- 第一行包含两个整数 $n$ 和 $k$($1 \le k \le n \le 500$),分别表示电脑中的订单数量和钉在板上的小票数量。
- 第二行包含 $n$ 个字符串,表示电脑中的订单,每个字符串由一个英文大写字母(菜单单品,
A-Z)和一个数字(桌号,0-9)组成。 - 第三行包含 $k$ 个字符,表示钉在板上的小票,每个字符要么是一个英文大写字母,要么是一个数字。
- 第四行包含一个数字 $t$(
0-9)和一个英文大写字母 $m$(A-Z),指定了声明:“所有钉在板上的桌号为 $t$ 的小票都对应菜单单品 $m$。”
保证钉在板上的小票对应于电脑中订单的某个子集。
输出格式
如果在不翻转任何小票的情况下,该声明可被证明为真或假,则分别输出 true 或 false。否则,输出需要翻转的钉在板上的小票的最小数量,然后以任意顺序输出它们基于 1 的索引。
样例
输入样例 1
6 4 A1 A2 B1 B2 C1 C2 A B 1 2 1 A
输出样例 1
2 3 2
输入样例 2
5 4 A1 B1 C2 C1 A2 2 A B 1 1 A
输出样例 2
false
输入样例 3
4 4 Z0 Z0 F9 F9 Z 0 9 9 4 F
输出样例 3
true