#include <bits/stdc++.h>
using namespace std;
const int N = 2e5;
int n;
long long seg[4 * N], lazy[4 * N];
void update(int st, int en, long long v, int idx = 1, int L = 0,
            int R = n - 1) {
  if (L > en || R < st) {
    return;
  }
  if (L >= st && R <= en) {
    seg[idx] += v;
    lazy[idx] += v;
    return;
  }
  seg[2 * idx] += lazy[idx];
  seg[2 * idx + 1] += lazy[idx];
  lazy[2 * idx] += lazy[idx];
  lazy[2 * idx + 1] += lazy[idx];
  lazy[idx] = 0;
  update(st, en, v, 2 * idx, L, (L + R) / 2);
  update(st, en, v, 2 * idx + 1, (L + R) / 2 + 1, R);
  seg[idx] = min(seg[2 * idx], seg[2 * idx + 1]);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n;
  int a[n], c[n];
  for (int i = 0; i < n; ++i) {
    cin >> a[i], --a[i];
  }
  for (int i = 0; i < n; ++i) {
    cin >> c[a[i]];
  }
  long long s = 0;
  for (int i = 0; i < n; ++i) {
    update(i, i, s);
    s += c[i];
  }
  long long ans = 9e18;
  for (int i = 0; i < n - 1; ++i) {
    update(0, a[i], c[a[i]]);
    update(a[i], n - 1, -c[a[i]]);
    ans = min(ans, seg[1]);
  }
  cout << ans;
  return 0;
}
