OI XV - bbb

// https://szkopul.edu.pl/problemset/problem/GaSxd7JWqK-Ukr7EDxAaJLAg/site/?key=statement

#include <bits/stdc++.h>

// BBB

using namespace std;

// #define int long long

constexpr int sizik = 1000 * 1001, INF = 1000 * 1000 * 1001;

#define ar std::array
#define pr std::pair
#define vec std::vector

typedef vec<vec<int>> _kra;

int n, p, q, x, y;
int a[sizik], b[sizik], pref[sizik], suff[sizik];
int ZBO[sizik], MPS[sizik];

void solve() {
    std::cin >> n >> p >> q >> x >> y;

    pref[0] = INF;
    for (int i = 1; i <= n; i++) {
        char c;
        std::cin >> c;

        if (c == '+')
            a[i] = 1;
        else
            a[i] = -1;

        b[i] = a[i] + b[i - 1];
        pref[i] = std::min(pref[i - 1], b[i]);
    }

    suff[n + 1] = INF;
    for (int i = n; i >= 1; i--) {
        suff[i] = std::min(suff[i + 1], b[i]);
    }

    for (int i = 0; i <= n; i++) {
        MPS[i] = std::min((suff[n - i + 1] - b[n - i]), pref[n - i] + b[n] - b[n - i]);
    }

    long long ans = INT64_MAX;

    for (int i = 0; i <= n; i++) {
        long long w = ((std::max(-(p + MPS[i]), 0)) + 1) / 2;
        ZBO[i] = w + (abs(q - p - 2 * w - b[n]) / 2);

        ans = std::min(ans, (long long)x * ZBO[i] + (long long)y * i);
    }

    std::cout << ans << '\n';
}

int32_t main() {
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cout.tie(0);

    int t = 1;
    // std::cin >> t;

    for (; t > 0; t--) {
        solve();
    }

    return 0;
}