atcoder#AGC019D. [AGC019D] Shift and Flip
[AGC019D] Shift and Flip
配点 : 点
問題文
と からなる同じ長さの二つの文字列 と があります。
あなたは、以下の操作を任意の順序で何度でも行って を変化させることができます。
- を一文字左にシフトする(すなわち、 として を に置き換える)。
- を一文字右にシフトする(すなわち、 として を に置き換える)。
- であるような をいずれか一つ選び、 を反転する(すなわち、 とする)。
あなたの目標は文字列 を一致させることです。
これに必要な最小の操作回数を出力してください。ただし、これが不可能である場合は と出力してください。
制約
- は と からなる。
入力
入力は以下の形式で標準入力から与えられる。
出力
文字列 を一致させるために必要な最小の操作回数を出力せよ。ただし、これが不可能である場合は と出力せよ。
1010
1100
3
目標を達成する最短の操作列を一つ示します。
- を反転:
- を左にシフト:
- を再度反転:
1
0
-1
の唯一のビットを反転させる方法はありません。
11010
10001
4
目標を達成する最短の操作列を一つ示します。
- を右にシフト:
- を反転:
- を左にシフト:
- を再度左にシフト:
0100100
1111111
5
, , , , を任意の順序で反転すればよいです。