Problem: We have N cards numbered 1, 2, ..., N. Card i (1 \leq i \leq N) has an integer A_i written in red ink on one side and an integer B_i written in blue ink on the other side. Initially, these cards are arranged from left to right in the order from Card 1 to Card N, with the red numbers facing up.

Determine whether it is possible to have a non-decreasing sequence facing up from left to right (that is, for each i (1 \leq i \leq N - 1), the integer facing up on the (i+1)-th card from the left is not less than the integer facing up on the i-th card from the left) by repeating the operation below. If the answer is yes, find the minimum number of operations required to achieve it.

* Choose an integer i (1 \leq i \leq N - 1). Swap the i-th and (i+1)-th cards from the left, then flip these two cards.

Constraints

* 1 \leq N \leq 18
* 1 \leq A_i, B_i \leq 50 (1 \leq i \leq N)
* All values in input are integers.

Input

Input is given from Standard Input in the following format:


N
A_1 A_2 ... A_N
B_1 B_2 ... B_N


Output

If it is impossible to have a non-decreasing sequence, print `-1`. If it is possible, print the minimum number of operations required to achieve it.

Examples

Input

3
3 4 3
3 2 3


Output

1


Input

2
2 1
1 2


Output

-1


Input

4
1 2 3 4
5 6 7 8


Output

0


Input

5
28 15 22 43 31
20 22 43 33 32


Output

-1


Input

5
4 46 6 38 43
33 15 18 27 37


Output

3

Solution (in PYTHON3):

Solution:
'''
自宅用PCでの解答
'''
import math
#import numpy as np
import itertools
import queue
import bisect
from collections import deque,defaultdict
import heapq as hpq
from sys import stdin,setrecursionlimit
#from scipy.sparse.csgraph import dijkstra
#from scipy.sparse import csr_matrix
ipt = stdin.readline
setrecursionlimit(10**7)
mod = 10**9+7 #998244353
dir = [(-1,0),(0,-1),(1,0),(0,1)]
alp = "abcdefghijklmnopqrstuvwxyz"

def popcnt(n):
    return bin(n).count("1")

def main():
    n = int(ipt())
    card = [[int(i) for i in ipt().split()] for _ in range(2)]
#    n = 18
#    card = [[j*500-i*3+400 for j in range(18)] for i in range(2)]
    dp = [[10**18]*n for i in range(2**n)]

    for i in range(1,2**n):
        pi = popcnt(i)
        if pi == 1:
            for j in range(n):
                if (i>>j)&1:
                    dp[i][j] = 0
        else:
            pp = 0
            for j in range(n-1,-1,-1):
                if (i>>j)&1:
                    nn = card[(pi-j+1)%2][j]
                    pn = i-2**j
                    dpn = dp[pn]
                    for k in range(n):
                        if dp[i][j] > dpn[k]+pp:
                            if card[(pi-k)%2][k] <= nn:
                                dp[i][j] = dpn[k]+pp
                    pp += 1
    ans = min(dp[2**n-1])
    if ans == 10**18:
        ans = -1
    print(ans)
    return None

if __name__ == '__main__':
    main()