#include <algorithm>
#include <iostream>
#include <queue>
#include <string>
#include <map>
using namespace std;
int n;//n字符串长度
map <string, int> inq;
struct Node{
    string str;
    int step;
};
queue<Node> q;
//判断字符串是否存在连续的2012
bool judge(string str){
    return (str.find("2012") != -1);
}
int BFS(){
    while(!q.empty()){
        Node top = q.front();
        q.pop();
        for(int i = 0; i < n - 1; i++){
            string Nowstr = top.str;
            int Nowstep = top.step;
            swap(Nowstr[i], Nowstr[i + 1]);
            if(inq[Nowstr] == 0){
                inq[Nowstr] = 1;
                Node tmp;   
                tmp.str = Nowstr, tmp.step = Nowstep + 1;
                if(judge(Nowstr)) return tmp.step;
                q.push(tmp);
            }
        }
    }
    return -1;
}
int main(){
    string s;
    cin >> n >> s;
    if(judge(s)) {cout << 0 << endl; return 0;}
    Node tmp;
    tmp.str = s, tmp.step = 0;
    while(!q.empty()) q.pop();
    q.push(tmp);
    inq[s] = 1;
    cout << BFS() << endl;
    return 0;
}