#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <queue>
#include <iomanip>
#include <fstream>
#include <stack>

#define int long long
#define endl '\n'
#define fi first
#define se second
#define p_b push_back

using namespace std;
const int inf=1e9+7;

main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n;
    cin>>n;
    int h[n],c[n];
    for(int i=0;i<n;i++)
        cin>>h[i];
    for(int i=0;i<n;i++)
        cin>>c[i];
    int dp[2][n+1];
    for(int i=0;i<n;i++)
        for(int j=0;j<2;j++)
        dp[j][i]=inf;
    dp[0][0]=0,dp[1][0]=0;
    set<pair<int,int>>st,stf;
    st.insert({inf,0});
    stf.insert({inf,0});
    for(int i=0;i<n;i++)
    {
        pair<int,int>in=*stf.lower_bound({h[i],0ll});
        dp[1][i+1]=c[i]+min(dp[0][in.se],dp[1][in.se]);
        in=*st.lower_bound({h[i],0ll});
        if(in.fi==inf)
        {
            dp[0][i+1]=inf;
        }
        else {
        dp[0][i+1]=c[in.se-1];
        if(in.se-1>=0)
            dp[0][i+1]+=min(dp[0][in.se-1],dp[1][in.se-1]);
        }
        st.insert({h[i],i+1});
        while((*stf.begin()).fi<h[i])
            stf.erase(*stf.begin());
        stf.insert({h[i],i+1});
    }
   /* for(int i=0;i<2;i++)
    {
        for(int j=0;j<=n;j++)
            cout<<dp[i][j]<<" ";
        cout<<endl;
    }*/
    cout<<min(dp[0][n],dp[1][n]);
    return 0;
}
