n = int(input())
x_cords = [int(each) for each in input().split()]
y_cords = [int(each) for each in input().split()]
traps = [(x_cords[i], y_cords[i]) for i in range(n)]
def get_neighbor(pos):
neighbor = set()
if pos[0] + 1 < 1000 and (pos[0]+1, pos[1]) not in searched:
neighbor.add((pos[0]+1, pos[1]))
if pos[1] + 1 < 1000 and (pos[0], pos[1]+1) not in searched:
neighbor.add((pos[0], pos[1]+1))
return neighbor
def bfs(current_list):
wait_list = set()
for each in current_list:
if each in traps:
return 0
else:
searched.add(each)
wait_list.update(get_neighbor(each))
if wait_list:
temp = bfs(wait_list)
if temp != -1:
return 1 + temp
else:
return -1
searched = set()
init_pos = set()
init_pos.add((1, 1))
print(bfs(init_pos))