/*																													   
 Templatka c++ Kacper Fis																							   																											   //
*/																													  
																								   
#include <bits/stdc++.h>																							   
																													   
using namespace std; 																								   
		
const double eps = 1e-9;																							   
const int INF = 1000000001;																						   
const float PI = 3.14;																								   
typedef long long LL;																								   
																													   
typedef vector<int> vi;																								   
typedef list<int> li;																								   
typedef queue<int> qi; 																								   
typedef pair<int,int> ii; 																							   
typedef map<string,int> msi; //np msi['nazwa'] = 'liczba'															   
typedef vector<ii> vii; //vector par<int>, do tworzenia tablicy dla grafów wagowych #dijkstra #Bellman_Ford			   
typedef priority_queue< ii, vector<ii>, greater<ii> > pq; //kolejka priorytetowa vectorów par(top()=min) #dijkstra	   
																													   																				   
vector<ii>::iterator iter;																							   
																													   																				   
#define print_list(x) for(it = (x).begin(); it != (x).end(); it++) {cout << *it << " ";}							   
#define print_vector(x) for(it2 = (x).begin(); it2 != (x).end(); it2++) {cout << *it2 << " ";}						   
#define search_list(x) for(it = (x).begin(); it != (x).end(); it++)													   
#define search_vector(x) for(it2 = (x).begin(); it2 != (x).end(); it2++);											   
#define pb(x) push_back(x) 																							   
#define pf(x) push_front(x)																							   
#define mp(x, y) make_pair(x, y)                                                                                       
///////////////////////////////////////////////GLOBAL DEFINITIONS////////////////////////////////////////////////////////

int p[100];
int q[100];
int tab[100];

vector< vector<int> > V;

///////////////////////////////////////////////////FUNCTIONS/////////////////////////////////////////////////////////////

int silnia(int x){
	int wynik = 1;
	for(int i = 1; i <= x; i++){
		wynik *= i;
	}
	return wynik;
}


/////////////////////////////////////////////////////MAIN////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])																					 
{ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);                  												       
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	int n;
	cin >> n;
	for(int i = 1; i <= n; i++){
		cin >> p[i]; 
	}
	for(int i = 1; i <= n; i++){
		cin >> q[i];
	}
	
	for(int i= 0; i < n; i++){
		tab[i] = i+1;
	}
	
	do{
		vector<int> one;
		for(int i = 0; i < n; i++){
			//cout << tab[i] << " ";
			one.pb(tab[i]);
		}
		V.pb(one);
		//cout << endl;	
	}while(next_permutation(tab, tab + n));
	
	sort(V.begin(), V.end());
	//cout << "permutations: " << endl;
	bool check1 = false;
	bool check2 = false;
	
	int id1 = 0;
	int id2 = 0;
	
	//cout << "permutations: " << endl;
	//for(int i = 0; i < silnia(n); i++){
		//for(auto it : V[i]){
			//cout << it << " ";
		//}
		//cout << endl;
	//}
	
	
	for(int j = 0; j < silnia(n); j++){
		int i = 1;
		int licznik1 = 0;
		int licznik2 = 0;
		for(auto it : V[j]){
			if(check1 == false)
				if(it == p[i]){
					licznik1++;
				}
			if(check2 == false)
				if(it == q[i]){
					licznik2++;
				}
			//cout << "p[i]: " << p[i] << endl;
			//cout << "i: " << i << '\n';
			//cout << "current licznik1: " << licznik1 << endl;
			//cout << "current licznik2: " << licznik2 << endl;
			i++;
		}
	//	cout << endl;
		if(licznik1 == n){
		//	cout << "YES 1" << endl;
			check1 = true;
			id1 = j;
		}
		if(licznik2 == n){
			//cout << "YES 2" << endl;
			check2 = true;
			id2 = j;
		}
	}
   
   if(id1 > id2){
	   cout << id1 - id2 << endl;
   }
   else cout << id2 - id1 << endl;
   
   
 
	return 0;
}


Measured memory_bytes: 3384