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();
    }
}