#include <stdio.h>
#include <string.h>
#include <vector>
#include <queue>
using namespace std;
typedef unsigned long long ULL;
int n,m;
int in[8][8];
int id[8][8];
int color[64];
int mm[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int con[64][64];
ULL eg[64][6];
const int H=3333331;
vector<ULL> hash[H];
class State{
public:
ULL s;
ULL mask[6];
int dis;
State(){
s=1;
for( int i=0; i<6; i++ ){
mask[i]=eg[0][i];
}
dis=0;
}
State(ULL y,const State& x){
s=y;
dis=x.dis+1;
y^=x.s;
for( int k=0; k<6; k++ ){
mask[k]=x.mask[k];
}
for( int j=0; j<n; j++ ){
if(y&(1ULL<<j)){
for( int k=0; k<6; k++ ){
mask[k]|=eg[j][k];
}
}
}
}
};
inline int find(ULL x){
int h=x%H;
for( int i=0; i<hash[h].size(); i++ ){
if(hash[h][i]==x) return 0;
}
hash[h].push_back(x);
return 1;
}
void flood_fill(int x,int y,int z,int d){
if(x>=0 && y>=0 && x<m && y<m && in[x][y]==z && id[x][y]==-1){
id[x][y]=d;
for( int i=0; i<4; i++ ){
flood_fill(x+mm[i][0],y+mm[i][1],z,d);
}
}
}
void create_graph(){
n=0;
memset(id,-1,sizeof(id));
memset(con,0,sizeof(con));
for( int i=0; i<m; i++ ){
for( int j=0; j<m; j++ ){
if(id[i][j]==-1){
flood_fill(i,j,in[i][j],n);
color[n]=in[i][j];
n++;
}
}
}
for( int i=0; i<m; i++ ){
for( int j=0; j<m; j++ ){
for( int k=0; k<4; k++ ){
int dx=i+mm[k][0],dy=j+mm[k][1];
if(dx>=0 && dy>=0 && dx<m && dy<m){
con[id[i][j]][id[dx][dy]]=1;
}
}
}
}
for( int i=0; i<n; i++ ){
for( int j=0; j<6; j++ ){
eg[i][j]=0;
for( int k=0; k<n; k++ ){
if(con[i][k] && color[k]==j){
eg[i][j]|=(1ULL<<k);
}
}
}
}
}
int main(){
while(scanf("%d",&m) && m){
for( int i=0; i<m; i++ ){
for( int j=0; j<m; j++ ){
scanf("%d",&in[i][j]);
}
}
for( int i=0; i<H; i++ ){
hash[i].clear();
}
create_graph();
queue<State> que;
que.push(State());
find(1);
ULL target=n==64?0xffffffffffffffffULL:(1ULL<<n)-1;
while(!que.empty()){
State x=que.front();
que.pop();
if(x.s==target){
printf("%d\n",x.dis);
break;
}
for( int i=0; i<6; i++ ){
ULL y=x.s|x.mask[i];
if(y!=x.s && find(y)){
que.push(State(y,x));
}
}
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHF1ZXVlPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBVTEw7CgppbnQgbixtOwppbnQgaW5bOF1bOF07CmludCBpZFs4XVs4XTsKaW50IGNvbG9yWzY0XTsKaW50IG1tWzRdWzJdPXt7MCwxfSx7MCwtMX0sezEsMH0sey0xLDB9fTsKaW50IGNvbls2NF1bNjRdOwpVTEwgZWdbNjRdWzZdOwpjb25zdCBpbnQgSD0zMzMzMzMxOwp2ZWN0b3I8VUxMPiBoYXNoW0hdOwoKY2xhc3MgU3RhdGV7IAogICAgcHVibGljOgoJVUxMIHM7CglVTEwgbWFza1s2XTsKCWludCBkaXM7CglTdGF0ZSgpewoJICAgIHM9MTsKCSAgICBmb3IoIGludCBpPTA7IGk8NjsgaSsrICl7CgkJbWFza1tpXT1lZ1swXVtpXTsKCSAgICB9CgkgICAgZGlzPTA7Cgl9CglTdGF0ZShVTEwgeSxjb25zdCBTdGF0ZSYgeCl7CgkgICAgcz15OwoJICAgIGRpcz14LmRpcysxOwoJICAgIHlePXguczsKCSAgICBmb3IoIGludCBrPTA7IGs8NjsgaysrICl7CgkJbWFza1trXT14Lm1hc2tba107CgkgICAgfQoJICAgIGZvciggaW50IGo9MDsgajxuOyBqKysgKXsKCQlpZih5JigxVUxMPDxqKSl7CgkJICAgIGZvciggaW50IGs9MDsgazw2OyBrKysgKXsKCQkJbWFza1trXXw9ZWdbal1ba107CgkJICAgIH0KCQl9CgkgICAgfQoJfQp9OwoKaW5saW5lIGludCBmaW5kKFVMTCB4KXsKICAgIGludCBoPXglSDsKICAgIGZvciggaW50IGk9MDsgaTxoYXNoW2hdLnNpemUoKTsgaSsrICl7CglpZihoYXNoW2hdW2ldPT14KSByZXR1cm4gMDsKICAgIH0KICAgIGhhc2hbaF0ucHVzaF9iYWNrKHgpOwogICAgcmV0dXJuIDE7Cn0KCnZvaWQgZmxvb2RfZmlsbChpbnQgeCxpbnQgeSxpbnQgeixpbnQgZCl7CiAgICBpZih4Pj0wICYmIHk+PTAgJiYgeDxtICYmIHk8bSAmJiBpblt4XVt5XT09eiAmJiBpZFt4XVt5XT09LTEpewoJaWRbeF1beV09ZDsKCWZvciggaW50IGk9MDsgaTw0OyBpKysgKXsKCSAgICBmbG9vZF9maWxsKHgrbW1baV1bMF0seSttbVtpXVsxXSx6LGQpOwoJfQogICAgfQp9Cgp2b2lkIGNyZWF0ZV9ncmFwaCgpewogICAgbj0wOwogICAgbWVtc2V0KGlkLC0xLHNpemVvZihpZCkpOwogICAgbWVtc2V0KGNvbiwwLHNpemVvZihjb24pKTsKICAgIGZvciggaW50IGk9MDsgaTxtOyBpKysgKXsKCWZvciggaW50IGo9MDsgajxtOyBqKysgKXsKCSAgICBpZihpZFtpXVtqXT09LTEpewoJCWZsb29kX2ZpbGwoaSxqLGluW2ldW2pdLG4pOwoJCWNvbG9yW25dPWluW2ldW2pdOwoJCW4rKzsKCSAgICB9Cgl9CiAgICB9CiAgICBmb3IoIGludCBpPTA7IGk8bTsgaSsrICl7Cglmb3IoIGludCBqPTA7IGo8bTsgaisrICl7CgkgICAgZm9yKCBpbnQgaz0wOyBrPDQ7IGsrKyApewoJCWludCBkeD1pK21tW2tdWzBdLGR5PWorbW1ba11bMV07CgkJaWYoZHg+PTAgJiYgZHk+PTAgJiYgZHg8bSAmJiBkeTxtKXsKCQkgICAgY29uW2lkW2ldW2pdXVtpZFtkeF1bZHldXT0xOwoJCX0KCSAgICB9Cgl9CiAgICB9CiAgICBmb3IoIGludCBpPTA7IGk8bjsgaSsrICl7Cglmb3IoIGludCBqPTA7IGo8NjsgaisrICl7CgkgICAgZWdbaV1bal09MDsKCSAgICBmb3IoIGludCBrPTA7IGs8bjsgaysrICl7CgkJaWYoY29uW2ldW2tdICYmIGNvbG9yW2tdPT1qKXsKCQkgICAgZWdbaV1bal18PSgxVUxMPDxrKTsKCQl9CgkgICAgfQoJfQogICAgfQp9CgppbnQgbWFpbigpewogICAgd2hpbGUoc2NhbmYoIiVkIiwmbSkgJiYgbSl7Cglmb3IoIGludCBpPTA7IGk8bTsgaSsrICl7CgkgICAgZm9yKCBpbnQgaj0wOyBqPG07IGorKyApewoJCXNjYW5mKCIlZCIsJmluW2ldW2pdKTsKCSAgICB9Cgl9Cglmb3IoIGludCBpPTA7IGk8SDsgaSsrICl7CgkgICAgaGFzaFtpXS5jbGVhcigpOwoJfQoJY3JlYXRlX2dyYXBoKCk7CglxdWV1ZTxTdGF0ZT4gcXVlOwoJcXVlLnB1c2goU3RhdGUoKSk7CglmaW5kKDEpOwoJVUxMIHRhcmdldD1uPT02ND8weGZmZmZmZmZmZmZmZmZmZmZVTEw6KDFVTEw8PG4pLTE7Cgl3aGlsZSghcXVlLmVtcHR5KCkpewoJICAgIFN0YXRlIHg9cXVlLmZyb250KCk7CgkgICAgcXVlLnBvcCgpOwoJICAgIGlmKHgucz09dGFyZ2V0KXsKCQlwcmludGYoIiVkXG4iLHguZGlzKTsKCQlicmVhazsKCSAgICB9CgkgICAgZm9yKCBpbnQgaT0wOyBpPDY7IGkrKyApewoJCVVMTCB5PXguc3x4Lm1hc2tbaV07CgkJaWYoeSE9eC5zICYmIGZpbmQoeSkpewoJCSAgICBxdWUucHVzaChTdGF0ZSh5LHgpKTsKCQl9CgkgICAgfQoJfQogICAgfQogICAgcmV0dXJuIDA7Cn0=