#P1026. demon的盗版像素工坊
demon的盗版像素工坊
demon的盗版像素工坊
背景
7unar 把「像素工坊」推荐给了 demon。demon 上网搜了个盗版就装上了。
打开一看,核心玩法倒是一样——屏幕上有一排 个像素格子,每个格子要么是黑色块,要么是白色块。
用手指框住连续三个像素,系统就会识别它们的排列模式,帮你一键切换:
-
黑色块 黑色块 白色块一键变成白色块 黑色块 黑色块(反过来也行) -
黑色块 白色块 白色块一键变成白色块 白色块 黑色块(反过来也行)
但盗版的设计师比正版心黑得多——关卡目标不只是问你「能不能从初始序列 变到目标序列 」,而是要你求出最少需要多少次操作。
如果根本无法变换(盗版免不了有 bug),那就输出 。
注意:输入中,黑色块用 表示,白色块用 表示。
题目描述
给你两个长度均为 的二进制字符串 和 。
你可以进行以下操作任意次:
-
选择一个子串
001,替换为100(反过来也行:100001) -
选择一个子串
110,替换为011(反过来也行:011110)
求将字符串 变成字符串 所需的最少操作次数。如果无法变换,输出 。
输入格式
第一行一个整数 (),表示测试数据组数。
每组测试数据:
-
第一行一个整数 (),表示字符串长度。
-
第二行一个字符串 (),由字符 和 组成。
-
第三行一个字符串 (),由字符 和 组成。
保证所有测试数据的 之和不超过 。
输出格式
对于每组测试数据,输出一个整数,表示最少操作次数。如果无法变换,输出 。
样例
5
4
0100
0001
4
0100
0010
6
110000
000011
8
10101010
10101010
5
01001
10010
1
-1
4
0
3
样例解释
-
第一组:选择
100,替换为001, 次操作。 -
第二组:无法变换,输出 。
-
第三组:最少 次,过程如下:
110000100100001100000011 -
第四组:,不需要操作,输出 。
-
第五组:最少 次操作。