题目描述
给定两个长度相同的由0和1组成的字符串:A=A1A2...An 和 B=B1B2...Bn。
你可以按任意顺序多次使用以下操作来改变A:
- 将A向左移动一个字符(即,如果A=A1A2...An,将A替换为A2A3...AnA1)。
- 将A向右移动一个字符(即,如果A=A1A2...An,将A替换为AnA1A2...An−1)。
- 选择任意满足Bi=1的i。将Ai翻转(即,将Ai设置为1−Ai)。
你的目标是使字符串A和B相等。
输出使其相等所需的最少操作次数,如果无法达到目标,则输出−1。
约束条件
- 1≤∣A∣=∣B∣≤2,000
- A和B由0和1组成。
输入
输入以以下格式给出:
A
B
输出
打印使字符串A和B相等所需的最少操作次数,如果无法达到目标,则输出−1。
示例输入1
1010
1100
示例输出1
3
以下是实现目标的一种最快方法:
- 翻转A1:A=0010
- 将A向左移动:A=0100
- 再次翻转A1:A=1100
示例输入2
1
0
示例输出2
-1
无法翻转A中唯一的位。
示例输入3
11010
10001
示例输出3
4
以下是实现目标的一种最快方法:
- 将A向右移动:A=01101
- 翻转A5:A=01100
- 将A向左移动:A=11000
- 再次将A向左移动:A=10001
示例输入4
0100100
1111111
示例输出4
5
按任意顺序翻转A1、A3、A4、A6和A7。