编程题
### 问题描述
一个二进制数组如果元素 $0$ 的数量和元素 $1$ 的数量相等,则称其为好的。
大衣有一个长度为 $N$ 的二进制数组 $A$,他想通过以下操作将数组变为好的:
- 选择两个索引 $i,j(i\ne j)$,然后将 $A_i,A_j$ 修改为 $A_i\oplus A_j$,其中 $\oplus$ 表示按位异或。
请找出最小的操作次数使得数组 $A$ 变成好的,如果无论怎么操作都无法满足要求,输出 $-1$。
### 输入格式
第一行输入一个正整数 $T$ 表示测试数据的组数。
接下来 $T$ 组测试数据每组输入两行:
- 第一行输入一个正整数 $N$ 表示二进制数组 $A$ 的长度。
- 第二行输入 $N$ 个整数 $A_1,A_2,\cdots,A_N$ 表示二进制数组 $A$ 的元素。
### 输出格式
对于每组测试数据,输出满足题目要求的最小的操作次数,如果无论怎么操作都无法满足要求输出 $-1$,并换行。
### 样例输入1
```text
3
1
0
2
1 0
4
1 0 0 0
```
### 样例输出1
```text
-1
0
1
```
### 说明
样例 $1$:无论怎么操作都无法将数组 $A$ 变成好的。
样例 $2$:初始时数组 $A$ 元素 $0$ 的个数已经和元素 $1$ 的个数相等,故不需要操作它就是好的。
样例 $3$:选择 $i=1,j=3$,然后将 $A_1,A_3$ 修改为 $A_1\oplus A_3=1\oplus0=1$,此时数组 $A=[1,0,1,0]$ 元素 $0$ 的个数已经和元素 $1$ 的个数相等,它是好的。
### 评测数据规模
对于所有的评测数据,$1\le T\le 20$,$1\le N\le 10^4$,$0\le A_i\le1$。