#include<bits/stdc++.h>
using namespace std;
  
typedef long long int64;
const int INF = 1 << 30;
  
vector< int > edge[13];
map< string, int > memo;
 
bool back(string str, int cnt){ //枝刈り大事だな
  static int dist[] = { 0, 2, 1, 2, 4, 3, 2, 3, 4, 2, 1, 2, 0};
  static int fuee[] = { 2, 0, 1, 2, 2, 1, 2, 3, 4, 2, 3, 4, 4};
 
  int foo1 = 0, foo2 = 0;
  for(int i = 0; i < 13; i++){
    if(str[i] == '0') foo1 += dist[i];
    if(str[i] == '1') foo2 += fuee[i];
  }
  return cnt + foo1 > 20 || cnt + foo2 > 20;
}
 
 
int bfs(string mas){
 
  queue< string > que;
  map< string , int > used;
  que.push( mas );
  memo[mas] = 0;
  while(!que.empty()){
 
    string p = que.front(); que.pop();
    if(back( p, memo[p])) break;
    if(p == "0123456789AB0") return memo[p];
 
    for(int i = 0; i < 13; i++){
      if(p[i] == '0') {
        for(int j = 0; j < edge[i].size(); j++){
          string next = p;
          swap( next[i], next[edge[i][j]]);
          if(memo.find(next) != memo.end()) continue;
          que.push( next );
          memo[next] = memo[p] + 1;
        }
      }
    }
  }
  return -1;
}
 
int main(){
  vector< int > mas(13);
 
  edge[0].push_back(2);
  edge[1].push_back(2); edge[1].push_back(4);
  edge[2].push_back(0); edge[2].push_back(1); edge[2].push_back(3); edge[2].push_back(6);
  edge[3].push_back(2); edge[3].push_back(7);
  edge[4].push_back(5);
  edge[5].push_back(1); edge[5].push_back(4); edge[5].push_back(6); edge[5].push_back(9);
  edge[6].push_back(2); edge[6].push_back(5); edge[6].push_back(7); edge[6].push_back(10);
  edge[7].push_back(3); edge[7].push_back(6); edge[7].push_back(8); edge[7].push_back(11);
  edge[8].push_back(7);
  edge[9].push_back(5); edge[9].push_back(10);
  edge[10].push_back(6); edge[10].push_back(9); edge[10].push_back(11); edge[10].push_back(12);
  edge[11].push_back(7); edge[11].push_back(10);
  edge[12].push_back(10);
 
  while(cin >> mas[0], mas[0] != -1){
    for(int i = 1; i < 13; i++){
      cin >> mas[i];
    }
 
    string start = "";
    for(int i = 0; i < 13; i++){
      if(mas[i] >= 10) start += (char)(mas[i] - 10 + 'A');
      else start += mas[i] + '0';
    }
    int ret = bfs(start);
    if(~ret) cout << ret << endl;
    else cout << "NA" << endl;
 
    memo.clear();
  }
}