#include "bits/stdc++.h"
using namespace std;
#define mod 998244353
#define ll long long
#define ff first
#define ss second
#define pb push_back
#define maxn 3005
#define INF (ll)1e16
ll n, A, B, C;
string s;
ll lcp[maxn][maxn], nxt[maxn][maxn], dp[maxn][maxn];
void solve(){
cin>>n;
cin>>s;
s='#'+s;
cin>>A>>B>>C;
for(ll i=n; i>=1; i--){
for(ll j=n; j>=1; j--){
lcp[i][j]=(s[i]==s[j])*(lcp[i+1][j+1]+1);
}
}
for(ll i=1; i<=n; i++){
for(ll j=1; j<=n; j++){
nxt[i][j]=n+1;
dp[i][j]=INF;
}
}
for(ll i=1; i<=n; i++){
dp[i][i]=A;
for(ll j=n; j>i; j--){
ll len=min(lcp[i][j],j-i);
if(len)nxt[i][len]=j;
nxt[i][j-i]=min(nxt[i][j-i],nxt[i][j-i+1]);
}
}
for(ll len=1; len<=n; len++){
for(ll i=1; i+len-1<=n; i++){
ll j=i+len-1;
dp[i][j]=min({dp[i][j],dp[i+1][j]+A,dp[i][j-1]+A});
ll p=nxt[i][len];
ll cnt=2;
while(p<=n){
dp[i][p+len-1]=min(dp[i][p+len-1],dp[i][j]+B+C*cnt+(p+len-1-i+1-len*cnt)*A);
p=nxt[p][len];
cnt++;
}
}
}
cout<<dp[1][n]<<'\n';
}
int main(){
// freopen("in.txt","w",stdout);
// freopen("out.txt","r",stdin);
ios_base::sync_with_stdio(0); cin.tie(0);
ll t=1;
// cin>>t;
while(t--) solve();
return 0;
}