#include <bits/stdc++.h>
template <typename T1, typename T2>
inline void chmin(T1 &a, T2 b) {
  if (a > b) a = b;
}
template <typename T1, typename T2>
inline void chmax(T1 &a, T2 b) {
  if (a < b) a = b;
}
using namespace std;
class Solve {
 public:
  void input() {}
  vector<int> conv(string s) {
    vector<int> ret;
    int num = 0;
    int cnt = 0;
    for (int i = 0; i <= s.size(); ++i) {
      if (i == s.size() - 1) {
        if (s[i] - '0' == num) {
          ret.push_back(cnt + 1);
        }
        if (s[i] - '0' != num) {
          ret.push_back(cnt);
          ret.push_back(1);
        }
        break;
      }
      if (s[i] - '0' == num) cnt++;
      if (s[i] - '0' != num) {
        num = !num;
        ret.push_back(cnt);
        cnt = 1;
      }
    }
    return ret;
  }
  void solve() {
    input();
    long long int A, B, C;
    cin >> A >> B >> C;
    string T;
    cin >> T;
    vector<int> tapi = conv(T);
    int L = 0, R = T.size();
    long long int ans = R * B;
    if (tapi[0] == 0) {
      ans += (tapi.size() - 1) * C;
    } else {
      ans += tapi.size() * C;
    }
    int chL = tapi[0] != 0, chR = tapi.size() - 2;
    for (int i = 0; i < tapi.size(); ++i) {
      L += tapi[i];
      R -= tapi[i];
      long long int tmp = L * A + R * B;
      chL = i + 1;
      chR = tapi.size() - i - 1;
      if (T[0] == '1') {
        chL--;
      }
      if (T.back() == '1') {
        chR--;
      }
      tmp += max(chR, chL) * C;
      if (tmp == 177) {
        int a = 1 + 333;
      }
      chmin(ans, tmp);
    }
    cout << ans << endl;
  }
};
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cout << fixed << setprecision(10);
  Solve().solve();
  return 0;
}
