#include <iostream> #include <string> using namespace std; int judge(string s,int n){ char a[5]="2012"; bool t=true; for(int i=0;i<n-3;i++){ for(int j=0;j<4;j++) t=t && (a[j]==s[i+j]); if(t==true) return 1; else t=true; } return 0; } int p=0; int dfs(string s,int n,int deep,int num){ if(deep==num){ if(judge(s, n)==1){ p=1; return 0; } else{ return 0; } } for(int i=0;i<n-1;i++){ string a=s; char b=a[i]; a[i]=a[i+1]; a[i+1]=b; dfs(a,n,deep+1,num); } return 0; } int main() { int n; string s; while (cin >> n){ // 注意 while 处理多个 case cin>>s; int j0=0,j1=0,j2=0; for(int i=0;i<n;i++){ switch (s[i]) { case '0':j0++; case '1':j1++; case '2':j2++; } } if(j0<1 | j1<1 | j2<2) { cout<< -1 <<endl; return 0; } else //以num为深度,进行dfs,不需要使用队列 for(int num=0;num!=-1;num++){ dfs(s,n,0,num); if(p==1){ cout<<num<<endl; p=0; return 0; } } } }