#P0751. 小可的军队联盟

小可的军队联盟

题目描述

在虚拟的游戏世界“士兵突击 33”中, (m+1)(m+1) 名玩家组建了自己的军队。这个游戏中共有 nn 种不同的士兵,兵种编号为 00n1n - 1,每种士兵都拥有独特的能力和特点。每位玩家的军队由这些士兵组成,而军队的构成可以用一个非负整数 xix_i 来表示。

具体来说,如果 xix_i 的二进制表示中第 jj 位是 11,那么意味着这位玩家的军队中拥有第 jj 种士兵。比如,如果 xix_i55(二进制表示为 101101),那么这位玩家的军队就拥有第 00 种和第 22 种士兵。

小可作为游戏的第 (m+1)(m+1) 名玩家,希望找到那些能与她并肩作战的战友。她认为,只要两位玩家的军队中最多只有 kk 种不同的士兵,那么他们就可以成为朋友。换句话说,就是他们军队数字的二进制表示最多只有 kk 位不同。

现在,请你帮助小可计算一下,在这个游戏世界中,有多少玩家可以成为她的朋友。

输入格式

  • 第一行包含三个整数 nmkn、m、k,表示士兵种类数、战友数量(不包括小可)和最多允许的不同士兵种类数。
  • 接下来的 m+1m + 1 行,每行包含一个整数 xix_i,表示第 ii 位玩家的军队构成。

输出格式

输出一个整数,表示可以成为小可盟友的玩家数量。

样例

7 3 1
8
5
111
17
0
3 3 3
1
2
3
4
3

提示

样例1解释

  • 7:表示游戏中总共有 77 种不同的士兵(编号从 0066 )。
  • 3:表示有 33 位玩家(不包括小可)的军队构成被给出。
  • 1:表示小可认为只要两位玩家的军队在士兵种类上最多只有 11 种不同,那么他们就可以成为朋友。

接下来是四行数字,分别表示四位玩家(包括小可)的军队构成:

  • 第一个数字8(二进制0001000)表示第一位玩家的军队中只有第 33 种士兵。
  • 第二个数字5(二进制0000101)表示第二位玩家的军队中有第 00 种和第 22 种士兵。
  • 第三个数字111(二进制1101111),表示第三位玩家的军队中有第0123560、1、2、3、5、6种士兵。
  • 第四个数字17(二进制0010001)表示小可(作为第4位玩家)的军队中有第 00 种和第 44 种士兵。

由于没有玩家的军队构成与小可的军队构成在士兵种类上最多只有 11 种不同,所以输出为0

数据范围

  • 1kn201 \le k \le n \le 20;
  • 1m10001 \le m \le 1000;
  • 1xi2n11 \le x_i \le 2^n - 1