农夫 Shota 遇到了一个问题。他刚搬进新建的农舍,但发现插座的配置无法满足他所有设备的需求。作为一名现代农夫,Shota 拥有许多智能手机和笔记本电脑,甚至还有一台供他最喜欢的奶牛 Wagyu 使用的平板电脑。他总共有 $N$ 台不同的设备。
由于这些设备规格各异且由不同公司制造,它们各自需要不同的电流才能充电。同样,屋里的每个插座也输出特定的电流。电流可以用一个长度为 $L$ 的由 0 和 1 组成的字符串来表示。
Shota 希望能同时为他的 $N$ 台设备充电。巧合的是,他的新房子里正好有 $N$ 个插座。为了配置插座输出的电流,总控制面板上有 $L$ 个开关。第 $i$ 个开关可以翻转所有插座输出电流的第 $i$ 位。例如,如果插座输出的电流为:
Outlet 0: 10 Outlet 1: 01 Outlet 2: 11
那么翻转第二个开关会将电流重新配置为:
Outlet 0: 11 Outlet 1: 00 Outlet 2: 10
如果 Shota 有一台需要电流 "11" 充电的智能手机、一台需要电流 "10" 充电的平板电脑,以及一台需要电流 "00" 充电的笔记本电脑,那么翻转第二个开关会让他非常满意!
Misaki 被 Shota 雇佣来帮助他解决这个问题。她测量了屋里插座输出的电流,并注意到它们各不相同。请判断 Shota 是否有可能同时为他所有的设备充电;如果可能,请计算出需要翻转的开关的最小数量,因为开关又大又重,Misaki 不想翻转超过必要的次数。
输入格式
输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例包含三行。第一行包含两个空格分隔的整数 $N$ 和 $L$。第二行包含 $N$ 个空格分隔的长度为 $L$ 的字符串,表示插座的初始电流。第三行也包含 $N$ 个空格分隔的长度为 $L$ 的字符串,表示 Shota 的设备所需的电流。
输出格式
对于每个测试用例,输出一行 "Case #$x$: $y$",其中 $x$ 是用例编号(从 1 开始),$y$ 是 Shota 为给所有设备充电所需翻转的最小开关数量。如果不可能,则 $y$ 应为字符串 "NOT POSSIBLE"(不含引号)。请注意,我们的评测系统对大小写不敏感,但在其他方面要求严格:因此,虽然 "not possible" 会被判定为正确,但任何拼写错误都会被判定为错误。我们建议将字符串 NOT POSSIBLE 直接复制粘贴到你的代码中。
数据范围
内存限制:1 GB。
$1 \le T \le 100$。
初始时,没有两个插座输出相同的电流。
没有两个设备需要相同的电流。
小数据集(8 分)
时间限制:5 秒。
$1 \le N \le 10$。
$2 \le L \le 10$。
大数据集(17 分)
时间限制:10 秒。
$1 \le N \le 150$。
$10 \le L \le 40$。
样例
样例输入 1
3 3 2 01 11 10 11 00 10 2 3 101 111 010 001 2 2 01 10 10 01
样例输出 1
Case #1: 1 Case #2: NOT POSSIBLE Case #3: 0
说明
在第一个样例中,Misaki 可以翻转第二个开关一次。插座输出的电流变为:
Outlet 0: 00 Outlet 1: 10 Outlet 2: 11
然后 Shota 可以使用插座 0 为设备 1 充电,使用插座 1 为设备 2 充电,使用插座 2 为设备 0 充电。这也是需要翻转的最少开关数量的解决方案。