#agc019d. [agc019_d]Shift and Flip

[agc019_d]Shift and Flip

题目描述

给定两个长度相同的由0和1组成的字符串:A=A1A2...AnA = A_1 A_2 ... A_nB=B1B2...BnB = B_1 B_2 ... B_n

你可以按任意顺序多次使用以下操作来改变AA

  • AA向左移动一个字符(即,如果A=A1A2...AnA = A_1 A_2 ... A_n,将AA替换为A2A3...AnA1A_2 A_3 ... A_n A_1)。
  • AA向右移动一个字符(即,如果A=A1A2...AnA = A_1 A_2 ... A_n,将AA替换为AnA1A2...An1A_n A_1 A_2 ... A_{n-1})。
  • 选择任意满足Bi=1B_i = 1ii。将AiA_i翻转(即,将AiA_i设置为1Ai1 - A_i)。

你的目标是使字符串AABB相等。

输出使其相等所需的最少操作次数,如果无法达到目标,则输出1-1

约束条件

  • 1A=B2,0001 \leq |A| = |B| \leq 2,000
  • AABB由0和1组成。

输入

输入以以下格式给出:

AA BB

输出

打印使字符串AABB相等所需的最少操作次数,如果无法达到目标,则输出1-1


示例输入1

1010
1100

示例输出1

3

以下是实现目标的一种最快方法:

  • 翻转A1A_1A=0010A = 0010
  • AA向左移动:A=0100A = 0100
  • 再次翻转A1A_1A=1100A = 1100

示例输入2

1
0

示例输出2

-1

无法翻转AA中唯一的位。


示例输入3

11010
10001

示例输出3

4

以下是实现目标的一种最快方法:

  • AA向右移动:A=01101A = 01101
  • 翻转A5A_5A=01100A = 01100
  • AA向左移动:A=11000A = 11000
  • 再次将AA向左移动:A=10001A = 10001

示例输入4

0100100
1111111

示例输出4

5

按任意顺序翻转A1A_1A3A_3A4A_4A6A_6A7A_7