AT_agc049_b [AGC049B] Flip Digits

题目描述

给定两个由 `0` 和 `1` 组成的长度为 $N$ 的字符串 $S$ 和 $T$。你可以对 $S$ 进行任意次以下操作: - 选择一个满足 $S_i=$`1` 的 $i$($2 \leq i \leq N$)。将 $S_i$ 替换为 `0`。同时,将 $S_{i-1}$ 改为与当前不同的字符。也就是说,如果操作前 $S_{i-1}$ 是 `0`,则改为 `1`;如果是 `1`,则改为 `0`。 你能否通过若干次操作使 $S$ 变为 $T$?如果可以,输出所需的最小操作次数;如果不可以,输出 $-1$。

输入格式

输入从标准输入读入,格式如下: > $N$ $S$ $T$

输出格式

如果可以将 $S$ 变为 $T$,输出所需的最小操作次数。如果不可以,输出 $-1$。

说明/提示

### 限制 - $1 \leq N \leq 5 \times 10^5$ - $S$ 是由 `0` 和 `1` 组成的长度为 $N$ 的字符串。 - $T$ 是由 `0` 和 `1` 组成的长度为 $N$ 的字符串。 ### 样例解释 1 `001` →(在 $i=3$ 处操作)→ `010` →(在 $i=2$ 处操作)→ `100`,即可完成转换。 由 ChatGPT 4.1 翻译