//bfs广度优先搜索
#include<stdio.h>
#include<string>
#include<queue>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
int n;
struct node{
string str;
int layer;
};
bool isOk(string a){
for(int i=0;i<=n-4;i++){
if(a[i]=='2'&&a[i+1]=='0'&&a[i+2]=='1'&&a[i+3]=='2') return true;
}
return false;
}
int cnt[3]={0};
queue<node> q;
int main(){
string str1;
string t;
while(~scanf("%d",&n)){
cin>>str1;
// t=str1;
while(!q.empty()) q.pop();
//****************************************//
fill(cnt,cnt+3,0);
for(int i=0;i<n;i++){
cnt[str1[i]-'0']++;
}
if(cnt[0]<1||cnt[1]<1||cnt[2]<2){
printf("-1\n");
continue;
}
//******************************************//
node Node;
Node.str=str1;
Node.layer=0;
q.push(Node);
while(!q.empty()){
node top=q.front();
q.pop();
string str2=top.str;
int lay=top.layer;
if(isOk(str2)){
printf("%d\n",lay);
break;
}
node temp;
for(int i=0;i<n-1;i++){
t=str2;
swap(t[i],t[i+1]);
temp.str=t;
temp.layer=lay+1;
q.push(temp);
// swap(t[i],t[i+1]);
}
}
}//while
return 0;
}