← Home
write a go solution for Description:
This is the hard version of this problem. In this version, n<=5000 holds, and this version has no restriction between x and y. You can make hacks only if both versions of the problem are solved.

You are given two binary strings a and b, both of length n. You can do the following operation any number of times (possibly zero).

- Select two indices l and r (l<r).
- Change a_l to (1-a_l), and a_r to (1-a_r).
- If l+1=r, the cost of the operation is x. Otherwise, the cost is y.

You have to find the minimum cost needed to make a equal to b or say there is no way to do so.

Input Format:
The first line contains one integer t (1<=t<=1000) — the number of test cases.

Each test case consists of three lines. The first line of each test case contains three integers n, x, and y (5<=n<=5000, 1<=x,y<=10^9) — the length of the strings, and the costs per operation.

The second line of each test case contains the string a of length n. The string only consists of digits 0 and 1.

The third line of each test case contains the string b of length n. The string only consists of digits 0 and 1.

It is guaranteed that the sum of n over all test cases doesn't exceed 5000.

Output Format:
For each test case, if there is no way to make a equal to b, print -1. Otherwise, print the minimum cost needed to make a equal to b.

Note:
In the first test case, selecting indices 2 and 3 costs 8, which is the minimum.

In the second test case, we can perform the following operations.

- Select indices 1 and 2. It costs 2, and a is 110001 now.
- Select indices 2 and 3. It costs 2, and a is 101001 now.
- Select indices 3 and 4. It costs 2, and a is 100101 now.
- Select indices 4 and 5. It costs 2, and a is 100011 now.
- Select indices 5 and 6. It costs 2, and a is 100000 now.

The total cost is 10.

In the third test case, we cannot make a equal to b using any number of operations.

In the fourth test case, we can perform the following operations.

- Select indices 3 and 6. It costs 3, and a is 0101011 now.
- Select indices 4 and 6. It costs 3, and a is 0100001 now.

The total cost is 6.

In the fifth test case, we can perform the following operations.

- Select indices 1 and 6. It costs 4, and a is 110000 now.
- Select indices 2 and 3. It costs 3, and a is 101000 now.

The total cost is 7.

In the sixth test case, we don't have to perform any operation.. Output only the code with no comments, explanation, or additional text.