#include <bits/stdc++.h>
using namespace std;

#define FOR(i, a, b) for(int i=(a); i<(b); i++)
#define REP(i, n) FOR(i, 0, n)

//#define doutnl(args...) cout<<args
#define doutnl(...)
#define dout(args...) doutnl(args<<endl;)
#define dprintl(args...) dout("D:"<<__LINE__<<": " args)
#define dv(v) <<#v<<"="<<(v)<<"; "


int ds[2][101];
int a[2][101];

int n;
const int INF=1000000;
int dfs(int t,int f,int d){
	dprintl(dv(t)dv(f)dv(d));
	if(f<1)return INF;
	if(f>n)return INF;
	if(d>=ds[t][f]){dprintl(dv(t)dv(f)dv(ds[t][f]));return INF;}
	ds[t][f]=d;
	
	dprintl(dv(a[t][f]));
	if(a[t][f]==1&&a[t][f+1]==1){
		if(f==n){dprintl(dv(t)dv(f)dv(d));return d;}
		return dfs(t,f+1,d);
	}else if(a[t][f]==2){
		return dfs(t,f-1,d);
	}else{
	
		if(f==n){dprintl(dv(t)dv(f)dv(d));return d;}
		return min(min(dfs(t^1,f+2,d+1),dfs(t^1,f+1,d+1)),dfs(t^1,f,d+1));
	}
		
} 
int main(){
	while(true){
		cin>>n;
		if(n==0) break;
		
		REP(j,2)REP(i, n) cin>>a[j][i+1];
		REP(j,2)REP(i,n+1)ds[j][i]=INF;
		
		int ans=min(dfs(0,1,0),dfs(1,1,0));
		if(ans>=INF){
			cout<<"NA"<<endl;
		}
		else{
			cout<<ans<<endl;
		}
	}
		
	return 0;
}