#include<bits/stdc++.h>
#define rep(i,n)for(int i=0;i<(n);i++)
using namespace std;

int cx[]{ 0,1,1,1,2,2,2,2,2,3,3,3,4 }, cy[]{ 2,1,2,3,0,1,2,3,4,1,2,3,2 };
int dx[]{ 1,-1,0,0 }, dy[]{ 0,0,1,-1 };
int d[5][5], lim, D, x[2], y[2];
bool dfs(int p) {
	if (D == 0)return true;
	if (p + D > lim)return false;
	rep(j, 2)rep(i, 4) {
		int nx = x[j] + dx[i], ny = y[j] + dy[i];
		if (nx < 0 || 5 <= nx || ny < 0 || 5 <= ny || !d[nx][ny])continue;
		int a = abs(cx[d[nx][ny]] - nx) + abs(cy[d[nx][ny]] - ny);
		int b = abs(cx[d[nx][ny]] - x[j]) + abs(cy[d[nx][ny]] - y[j]);
		D += b - a; swap(d[x[j]][y[j]], d[nx][ny]); swap(x[j], nx); swap(y[j], ny);
		if (dfs(p + 1))return true;
		D -= b - a; swap(d[x[j]][y[j]], d[nx][ny]); swap(x[j], nx); swap(y[j], ny);
	}
	return false;
}
int main() {
	while (1) {
		D = 0; int p = 0;
		rep(i, 13) {
			scanf("%d", &d[cx[i]][cy[i]]);
			if (d[cx[i]][cy[i]] == -1)return 0;
			if (d[cx[i]][cy[i]] == 0) {
				x[p] = cx[i]; y[p++] = cy[i];
			}
			else D += abs(cx[i] - cx[d[cx[i]][cy[i]]]) + abs(cy[i] - cy[d[cx[i]][cy[i]]]);
		}
		for (lim = 0; lim <= 20; lim++) {
			if (dfs(0)) {
				printf("%d\n", lim); break;
			}
		}
		if (lim == 21)puts("NA");
	}
}