#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <complex>
#include <cstring>
#include <cstdlib>
#include <string>
#include <cmath>
#include <queue>
#include <set>
using namespace std;

#define REP(i,n) for(int i=0;i<(int)n;++i)
#define FOR(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i)
#define ALL(c) (c).begin(), (c).end()
const int INF = 1<<29;

typedef vector<vector<int> > mat;
int dx[] = {0,1,0,-1};
int dy[] = {1,0,-1,0};

mat goal(5, vector<int>(5,-1));
set<mat> mp;

int hogex[12] = {0,1,2,3,0,1,2,3,4,1,2,3};
int hogey[12] = {0,1,1,1,2,2,2,2,2,3,3,3};
int dist(mat a) {
  int res = 0;
  REP(x,5) {
    REP(y,5) {
      if (a[x][y] > 0) {
        res += abs(x-hogex[a[x][y]]) + abs(y-hogey[a[x][y]]);
      }
    }
  }
  return res;
}

int main() {
  goal[2][0] = 0;
  REP(i,3) goal[i+1][1] = i+1;
  REP(i,5) goal[i][2] = i+4;
  REP(i,3) goal[i+1][3] = i+9;
  goal[2][4] = 0;
  
  int a;
  while(cin >> a, a!=-1) {
    mp.clear();
    mat ma(5, vector<int>(5, -1));
    ma[2][0] = a;
    REP(i,3) {
      cin >> a;
      ma[i+1][1] = a;
    }
    REP(i,5) {
      cin >> a;
      ma[i][2] = a;
    }
    REP(i,3) {
      cin >> a;
      ma[i+1][3] = a;
    }
    cin >> a;
    ma[2][4] = a;

    queue<pair<mat, int> > Q;
    Q.push(pair<mat, int>(ma, 0));
    mp.insert(ma);
    bool ff = 0;
    while(!Q.empty()) {
      mat ma2 = Q.front().first;
      int d = Q.front().second;
      Q.pop();
//      cout << d << " " << mp.size() << endl;
      if (d > 20) break;
      if (ma2 == goal) {
        ff = 1;
        cout << d << endl;
        break;
      }
      if (d + dist(ma2) > 20) continue;
      
      vector<int> zx,zy;
      REP(x,5) REP(y,5) {
        if (ma2[x][y] == 0) {
          zx.push_back(x);
          zy.push_back(y);
        }
      }
      REP(i,2) {
        int x = zx[i], y = zy[i];
        REP(k,4) {
          int xx = x + dx[k];
          int yy = y + dy[k];

          if (xx<0 || xx>=5 || yy<0 || yy>=5) continue;
          if (ma2[xx][yy] == -1) continue;

          mat tmp = ma2;
          swap(tmp[x][y], tmp[xx][yy]);
          if (mp.count(tmp)) continue;
          mp.insert(tmp);
          Q.push(make_pair(tmp, d+1));
        }
      }
    }
    if (!ff)
      cout << "NA" << endl;
  }
}