#ATagc019d. [AGC019D] Shift and Flip

[AGC019D] Shift and Flip

题目描述

有两个长度相同、仅由 0011 组成的字符串 A=A1A2...AnA = A_1A_2...A_nB=B1B2...BnB = B_1B_2...B_n

你可以对 AA 进行如下操作,次数不限且顺序任意:

  • AA 向左循环移位一位(即将 A=A1A2...AnA=A_1A_2...A_n 变为 A2A3...AnA1A_2A_3...A_nA_1)。
  • AA 向右循环移位一位(即将 A=A1A2...AnA=A_1A_2...A_n 变为 AnA1A2...An1A_nA_1A_2...A_{n-1})。
  • 任意选择一个 Bi=1B_i=1 的位置 ii,将 AiA_i 反转(即令 Ai=1AiA_i=1-A_i)。

你的目标是使字符串 AABB 完全相同。

请输出使 AABB 相同所需的最小操作次数。如果无法做到,请输出 1-1

输入格式

输入以以下格式从标准输入读入:

AA BB

输出格式

输出使字符串 AABB 完全相同所需的最小操作次数。如果无法实现,请输出 1-1

样例 1

输入

1010
1100

输出

3

样例 2

输入

1
0

输出

-1

样例 3

输入

11010
10001

输出

4

样例 4

输入

0100100
1111111

输出

5

说明/提示

限制条件

  • 1A=B2,0001 \leq |A|=|B| \leq 2{,}000
  • A,BA,B 仅包含 0011

样例解释 1

以下是一种实现目标的最短操作序列:

  • 反转 A1A_1A=0010A = 0010
  • 左移一次:A=0100A = 0100
  • 再次反转 A1A_1A=1100A = 1100

样例解释 2

没有办法反转 AA 的唯一一个比特。

样例解释 3

以下是一种实现目标的最短操作序列:

  • 右移一次:A=01101A = 01101
  • 反转 A5A_5A=01100A = 01100
  • 左移一次:A=11000A = 11000
  • 再次左移一次:A=10001A = 10001

样例解释 4

只需按任意顺序依次反转 A1A_1A3A_3A4A_4A6A_6A7A_7 即可。

由 ChatGPT 5 翻译