#include<iostream>
#include<cstring>
#include<map>
#include<queue>
using namespace std;
int n;
int mas[2][222];
bool used[2][222];
struct P{int a,b,c;};  //a=棟 b=階 c=cnt
int bfs();
int main(){
  while(1){
    memset(mas,0,sizeof(mas));
    cin >> n;
    if(n==0)break;
    for(int i=0;i<n;i++)
      cin >> mas[0][i];
    for(int i=0;i<n;i++)
      cin >> mas[1][i];
    memset(used,0,sizeof(used));
    int k=bfs();
    if(k==-1)cout << "NA" << endl;
    else cout << k << endl;
  }
}
int bfs(){
  queue<P> que;
  P p={0,0,0};
  que.push(p);
  p.a=1;
  que.push(p);
  while(!que.empty()){
    P p=que.front();

    for(;;p.b++){
      if(!(mas[p.a][p.b]==1 && mas[p.a][p.b+1]==1))break;
    }
    for(;;p.b--){
      if(!(mas[p.a][p.b]==2))break;
    }

    if(p.b==n-1)return p.c;
    que.pop();
    if(used[p.a][p.b]++)continue;
    for(int i=0;i<3;i++){
      if(p.b+i<n){
	P HM={(p.a==0?1:0),p.b+i,p.c+1};
	que.push(HM);
      }
    }
  }
  return -1;
}