CF1615C Menorah

题目描述

有 $n$ 支蜡烛放在光明节烛台上,其中一些蜡烛最初是点燃的。我们可以用一个二进制字符串 $s$ 来描述哪些蜡烛被点燃,其中第 $i$ 支蜡烛被点燃当且仅当 $s_i=1$。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1615C/23095c0b536d5c6c64ebf4ef5c8e358f51d36118.png) 最初,蜡烛的点燃情况由字符串 $a$ 描述。在一次操作中,你可以选择一支当前已经点燃的蜡烛。这样做后,你选择的那支蜡烛会保持点燃状态,其余所有蜡烛的状态都会改变(如果原来是点燃的就会熄灭,原来是熄灭的就会点燃)。 你希望将蜡烛的状态变为字符串 $b$ 所描述的样子。你的任务是判断是否有可能做到,如果可以,求出所需的最少操作次数。

输入格式

第一行包含一个整数 $t$($1\le t\le 10^4$),表示测试用例的数量。接下来有 $t$ 组测试数据。 每组测试数据的第一行包含一个整数 $n$($1\le n\le 10^5$),表示蜡烛的数量。 第二行包含一个长度为 $n$ 的字符串 $a$,仅由 $0$ 和 $1$ 组成,表示初始的点燃状态。 第三行包含一个长度为 $n$ 的字符串 $b$,仅由 $0$ 和 $1$ 组成,表示期望的点燃状态。 保证所有测试用例中 $n$ 的总和不超过 $10^5$。

输出格式

对于每个测试用例,输出一个整数,表示将 $a$ 变为 $b$ 所需的最少操作次数。如果无法实现,输出 $-1$。

说明/提示

在第一个测试用例中,两个字符串已经相等,因此不需要进行任何操作。 在第二个测试用例中,我们可以选择第二支蜡烛进行一次操作,将 $01$ 变为 $11$。 在第三个测试用例中,因为没有点燃的蜡烛可供选择,所以无法进行任何操作。 在第四个测试用例中,我们可以按如下方式将 $a$ 变为 $b$: 1. 选择第 $7$ 支蜡烛:$100010{\color{red}1}11\to 011101{\color{red}1}00$。 2. 选择第 $2$ 支蜡烛:$0{\color{red}1}1101100\to 1{\color{red}1}0010011$。 3. 选择第 $1$ 支蜡烛:${\color{red}1}10010011\to {\color{red}1}01101100$。 在第五个测试用例中,我们可以按如下方式将 $a$ 变为 $b$: 1. 选择第 $6$ 支蜡烛:$00101{\color{red}1}011\to 11010{\color{red}1}100$。 2. 选择第 $2$ 支蜡烛:$1{\color{red}1}0101100\to 0{\color{red}1}1010011$。 3. 选择第 $8$ 支蜡烛:$0110100{\color{red}1}1\to 1001011{\color{red}1}0$。 4. 选择第 $7$ 支蜡烛:$100101{\color{red}1}10\to 011010{\color{red}1}01$。 由 ChatGPT 4.1 翻译