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$。