n = int(input())
heights = list(map(int, input().split()))
costs = list(map(int, input().split()))

# Инициализируем стек для хранения индексов колонн, на которых закрепим крыши
stack = []

# Первая фаза: двигаемся слева направо, выбирая лучший вариант для закрепления крыши
left_cost = [0] * n
for i in range(n):
    while stack and heights[i] >= heights[stack[-1]]:
        stack.pop()
    if stack:
        left_cost[i] = left_cost[stack[-1]] + costs[i]
    else:
        left_cost[i] = costs[i]
    stack.append(i)

# Очищаем стек для второй фазы
stack.clear()

# Вторая фаза: двигаемся справа налево, выбирая лучший вариант для закрепления крыши
right_cost = [0] * n
for i in range(n - 1, -1, -1):
    while stack and heights[i] >= heights[stack[-1]]:
        stack.pop()
    if stack:
        right_cost[i] = right_cost[stack[-1]] + costs[i]
    else:
        right_cost[i] = costs[i]
    stack.append(i)

# Вычисляем минимальную стоимость, выбирая на каждой колонне лучший вариант
min_cost = min(left_cost[i] + right_cost[i] - costs[i] for i in range(n))

print(min_cost)
