//用set<string>来代替inq[]和struct中的index了
//就是一开始想到用set了,没啥别的意义
//用node.index和bool inq[maxN]也完全可以
#include <cstdio>
#include <iostream>
#include <string>
#include <queue>
#include <set>
using namespace std;

struct node{
    string str;
    int step;
    node(string s,int st):str(s),step(st){}
};

set<string> inq;    //用来标记字符串是否入过队了,访问过则有inq.find(str)!=inq.end()

void BFS(string origin){
    queue<node> q;
    q.push(node(origin,0));
    inq.insert(origin);
    while(!q.empty()){
        node current = q.front();
        q.pop();
        if(current.str.find("2012")!=string::npos){
            cout<<current.step<<endl;
            return;
        }
        for(int i=0;i<current.str.size()-1;i++){
            string temp = current.str;
            temp[i] = current.str[i+1];
            temp[i+1] = current.str[i];
            if(inq.find(temp)==inq.end()){        //set起到检查temp字符串是否已经入过队了
                q.push(node(temp,current.step+1));
                inq.insert(temp);
            }
        }
    }
    cout<<"-1"<<endl;
}
int main(){
    int N;
    string str;
    while(cin>>N>>str){
        if(N<4)
            cout<<"-1"<<endl;
        else
            BFS(str);
    }
    return 0;
}