#include <bits/stdc++.h>
using namespace std;
long long parent[300001], Size[300001];
long long find_set(long long x) {
  if (x == parent[x]) return parent[x];
  return parent[x] = find_set(parent[x]);
}
void Union(long long x, long long y) {
  x = find_set(x);
  y = find_set(y);
  if (x != y) {
    if (Size[x] > Size[y]) {
      parent[y] = parent[x];
      Size[x] += Size[y];
    } else {
      parent[x] = parent[y];
      Size[y] += Size[x];
    }
  }
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  long long n, x, y;
  cin >> n >> x >> y;
  string s;
  cin >> s;
  for (long long i = 1; i <= n; i++) {
    parent[i] = i;
    Size[i] = 1;
  }
  for (long long i = 0; i < n - 1; i++) {
    if (s[i] == '0' && s[i + 1] == '0') Union(i + 1, i + 2);
  }
  set<long long> st;
  for (long long i = 0; i < n; i++) {
    if (s[i] == '0') {
      long long p = find_set(i + 1);
      st.insert(p);
    }
  }
  long long p1 = st.size() * y;
  long long p2 = (st.size() - 1) * x + y;
  cout << min(p1, p2);
}
