import java.io.*;
import java.util.*;
public class Main {
static int mod=(int)(1e9+7);
public static void main(String[] args) {
String[] num=Str().split(" ");
int n=Integer.valueOf(num[0]);
int x=Integer.valueOf(num[1]);
int y=Integer.valueOf(num[2]);
char[] s=Str().toCharArray();
long[] dp=new long[n];
if(n<2){
pw.println(0);
return;
}
dp[1]=s[1]==s[0]?x:y;//dp初始化
for(int i=2;i<n;i++){
//如果当前与前一个不同则判断由这个不同的转化到当前的最小花费
//例如:000001是前面所有0到1的最小花费
if(s[i]!=s[i-1]){
dp[i]=dp[i-1]+y;
int j=i-2;
while(j>=0&&s[j]!=s[i]){
dp[i]=Math.min(dp[i],dp[j]+y);
j--;
}
if(j>=0){
//j>0则可以判断相同的右边最近到i的花费
//例如1000001
dp[i]=Math.min(dp[i],dp[j]+x);
}
}else{
//相同则由前一个的花费+x
dp[i]=dp[i-1]+x;
}
}
pw.println(dp[n-1]);
pw.flush();
}
}