1544: 2016年计算机学院ACM创新实验室新生赛-翻硬币游戏

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:1 Solved:1

Description

    双十一过后,Jerrien的钱包经过了一场血淋淋的洗劫,看来他要过上吃土的日子了。
突然有一天,Jerrien在地上看到几块硬币,他看着地上的硬币盯了许久,仿佛在思考着什么,他到底是在考虑要不要把硬币交给警察叔叔还是在等失主回来?又或者,
要知道,这时候周围的人比较多,一般当地上有钱的时候,有些人会把它踩在脚下,然后等人少的时候,偷偷捡起来,嘿嘿!当然!Jerrien绝对不是这样的人(不信你
哪天偷偷拿张一百块放他脚下试试→_→),那么,Jerrien这时候是在想什么呢?
    地上的硬币恰好排成一排,有些是正面朝上,另一些是反面朝上(用1表示正面,0表示反面),原来,Jerrien是想把它们从一个序列翻转为一个另一个序列,
假设每次操作只翻转两枚相邻的硬币,需要翻转多少次呢?Jerrien希望求出最小翻转次数,现在由聪明的你来帮忙完成这个任务。

Input

输入数据有多组,每组第一行一个数字n(1<=n<=10^4),表示序列的长度,
第二行为初始序列,第三行为翻转所需要得到的目标序列,序列均由0和1组成。

Output

对于每组输入数据,输出一行,输出所需要的最小翻转次数。如果不能得到目标序列,输出-1.

Sample Input Copy

5
0 1 0 0 0
0 0 0 0 1
2
1 0
0 0
7
1 0 0 0 0 1 0
0 1 0 0 1 0 0 

Sample Output Copy

3
-1
2

HINT

对于第一组输入,第一次翻转第二第三个,第二次翻转第三第四个,第三次第四第五个;
对于第二组输入,无论怎么翻转都不可能得到目标序列;
对于第三组输入,翻转第一第二和第五第六个硬币。