#CF2131F. 不公正的二进制生活

    ID: 7046 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 7 上传者: 标签>数据结构贪心组合数学其他二分查找排序*1900

不公正的二进制生活

F. 不公正的二进制生活

每次测试的时间限制:22
每次测试的内存限制:256256 兆字节

Yuri 有两个长度为 nn 的二进制字符串 aabb。这两个字符串动态地定义一个 n×nn \times n 的网格。记 (i,j)(i,j) 为第 ii 行第 jj 列的格子。格子 (i,j)(i,j) 的初始值为 aibja_i \oplus b_j,其中 \oplus 表示按位异或运算。

Yuri 的旅程总是从格子 (1,1)(1,1) 开始。从一个格子 (i,j)(i,j),她只能向下走到 (i+1,j)(i+1,j) 或向右走到 (i,j+1)(i,j+1)。如果存在一条合法路径,使得路径上的所有格子(包括 (1,1)(1,1))的值都为 00,则称该旅程是可行的。

在出发之前,她可以任意多次执行以下操作:

  • 选择一个下标 1in1 \le i \le n,翻转 aia_ibib_i 的值(00 变成 1111 变成 00)。网格也会相应改变。

f(x,y)f(x,y) 表示 Yuri 能够走到格子 (x,y)(x,y) 所需的最少操作次数。你需要求所有 1x,yn1 \le x, y \le nf(x,y)f(x,y) 之和。

注意,这 n2n^2 种情况是独立的,也就是说在每种情况下你需要假设网格处于初始状态(即并没有实际执行任何操作)。


输入
每个测试包含多个测试用例。第一行包含一个整数 tt1t1041 \le t \le 10^4)——测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn1n21051 \le n \le 2 \cdot 10^5)。

第二行包含一个二进制字符串 aaa=n|a| = nai{0,1}a_i \in \{0,1\})。

第三行包含一个二进制字符串 bbb=n|b| = nbi{0,1}b_i \in \{0,1\})。

保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5


输出
对于每个测试用例,输出一个整数——所有格子最小操作次数之和。


示例

输入

3
2
11
00
2
01
01
4
1010
1101

输出

5
4
24

说明
在第一个测试用例中,2×22 \times 2 的网格如下所示:

1 1
1 1

初始状态下,Yuri 无法到达任何格子。

Yuri 可以翻转 a1a_1,使得网格变为:

0 0
1 1

此时 Yuri 可以到达格子 (1,1)(1,1)(1,2)(1,2)

另一方面,Yuri 可以翻转 b1b_1,使得网格变为:

0 1
0 1

此时 Yuri 可以到达格子 (1,1)(1,1)(2,1)(2,1)

要到达格子 (2,2)(2,2),可以证明至少需要两次操作。例如,她可以同时翻转 a1a_1a2a_2,使得网格变为:

0 0
0 0

因此答案为 1+1+1+2=51+1+1+2=5