:i P1008 - 狗·猫·狮子 - 铁一启智tyqzOJ

1008: 狗·猫·狮子

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:4 解决:1

题目描述

鲁迅养了N只宠物,种类仅有狗、猫、狮子三种,这N只宠物排成了一条线。 

猫和狗并不喜欢彼此,但狮子却和它们相处得很好。 

为了安宁,鲁迅决定重新排列宠物,使得狗和猫不挨在一起。

每次移动,鲁迅都可以将一只宠物移动到线上的其他位置。 

鲁迅想知道重新排列宠物所需的最少移动次数。 

为了保证数据多样性,每个数据点均有多组数据。

输入

第一行一个整数T,表示该数据点含有的数据组数。 
对于每组数据: 
第一行一个整数N,表示宠物数量。 
第二行N个整数,表示宠物的初始排列,0表示猫,1表示狗,2表示狮子。

输出

共T行,每行一个整数,表示对于每组数据的最少移动次数,如果无法达到目标则输出-1。

样例输入 复制

2
5
0 1 0 1 2
9
0 0 0 1 1 2 0 0 2

样例输出 复制

2
1

提示

【样例说明】 
对于样例1: 
对于第一组数据: 
将两只狗移动到末尾 
对于第二组数据: 
将第二只狮子移动到第一只狗之前 
【数据范围】 
1<=T<=500
1<=N<=5000 
单个数据点中所有N的总和不超过5000