#include <algorithm>
#include <climits>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<char> balloon(n);
for (int i = 0; i < n; ++i) {
cin >> balloon[i];
}
vector<int> t(n+1);
for (int i = 1; i <= n; ++i) {
cin >> t[i];
}
vector<vector<long long>> pre(n + 1, vector<long long>(3));
for (int i = 1; i <= n; i ++ ) {
pre[i][0] = pre[i - 1][0];
pre[i][1] = pre[i - 1][1];
pre[i][2] = pre[i - 1][2];
if (balloon[i - 1] == '0') {
pre[i][1] += t[i];
pre[i][2] += t[i];
} else if (balloon[i - 1] == '1') {
pre[i][0] += t[i];
pre[i][2] += t[i];
} else {
pre[i][0] += t[i];
pre[i][1] += t[i];
}
}
long long ans = LLONG_MAX;
vector<long long> mn(n+1);
int a[3] = {0, 1, 2};
do {
mn[1] = pre[1][a[0]] - pre[1][a[1]];
for (int i = 2; i <= n; i ++ ) {
mn[i] = min(mn[i - 1], pre[i][a[0]] - pre[i][a[1]]);
}
for (int i = n + 1; i >= 1; i -- ) {
ans = min(ans, pre[n][a[2]] - pre[i - 1][a[2]] + pre[i - 1][a[1]] + mn[i - 1]);
}
} while (next_permutation(a, a + 3));
cout << ans << endl;
return 0;
}
// 64 位输出请用 printf("%lld")