求调%%%
#include <bits/stdc++.h>
#define N 1000005
#define INF 0x3f3f3f3f
using namespace std;
int n,m,p,q,x,y;
int a[N*3],ans;
deque<int> que;
int main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n >> p >> q >> x >> y;
for (int i=1;i<=n;++i){
char c; cin >> c;
a[i] = a[i+n] = (c == '+' ? 1 : -1);
}
a[0] = p;
for (int i=1;i<=n;++i) a[i] += a[i-1];
m = 2*n;
ans = INF;
que.push_back(0);
for (int i=1;i<m;++i){
if (que.front() + n <= i) que.pop_front();
while (que.size() && a[que.back()] > a[i]) que.pop_back();
que.push_back(i);
if (i >= n){
int one=0,two=0;
int cnt = 0;
int fr = a[que.front()];
int ba = a[i];
if (fr < 0){
cnt += ceil(1.0*abs(fr)/2.0) * x;
ba += ceil(1.0*abs(fr)/2.0) * 2;
}
int cha = abs(ba - q);
if (cha % 2) continue;
else cnt += cha / 2 * x;
cnt += (m-i) % n * y;
ans = min(ans,cnt);
}
}
cout << ans;
return 0;
}