#include <iostream> #include <queue> #include <unordered_map> #include <algorithm> using namespace std; int n; string s; struct New_string{ string s; int step; New_string(string s, int x): s(s), step(x){} }; unordered_map<string, bool> visit; void bfs(string s) { queue<New_string> q; q.push(New_string(s, 0)); visit[s] = true; while(!q.empty()) { New_string tmp = q.front(); q.pop(); string tmp_s = tmp.s; if(tmp_s.find("2012") != string::npos) { cout << tmp.step << endl; return; } for(int i = 0; i < tmp_s.size() - 1; i++) { swap(tmp_s[i], tmp_s[i+1]); if(!visit[tmp_s]) { q.push(New_string(tmp_s, tmp.step+1)); visit[tmp_s] = true; } swap(tmp_s[i], tmp_s[i+1]); } } cout << -1 << endl; } int main() { while(cin >> n >> s) { visit.clear(); bfs(s); } } // 64 位输出请用 printf("%lld")