CF1370E Binary Subsequence Rotation

题目描述

给定两个长度为 $n$ 的 $01$ 串 $a$ 和 $b$。 对于一次“旋转”操作我们这样定义:如果我们要旋转的序列为 $c_1,c_2,c_3,c_4,c_5...c_n$,那么旋转之后的序列为 $c_n,c_1,c_2,c_3,c_4...c_{n-1}$。 例如对于 $s=1110100$,如果我们旋转的子序列的下标为 $\{2,6,7\}$(从 $1$ 开始),那么旋转之后的串为 $1010110$。 求至少进行多少次“旋转”操作,能够把串 $a$ 变成串 $b$。如果不可能将 $a$ 转换成 $b$ 请输出 $-1$。

输入格式

输入一共三行。 第一行输入一个整数 $n~(1 \le n \le 10^6)$。 第二行输入串 $a$。 第三行输入串 $b$。

输出格式

一行一个整数,表示最小的操作次数。

说明/提示

在样例 $1$ 中,我们可以选择对应下标 $\{2,6\}$ 的子序列并旋转一次就可以将 $a$ 转换为 $b$。 在样例 $2$ 中,我们可以将对应所有下标的子序列旋转 $5$ 次。可以证明,这是所需的最小操作次数。 在最后一个样例中,可以证明,无法将 $a$ 转换为 $b$。