#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 2510;
int lcp[maxn][maxn], nxt[maxn][maxn];
string s;
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n, a, b, c; cin >> n >> s >> a >> b >> c;
for(int i = n; i >= 1; i--){
for(int j = i - 1; j >= 1; j--){
lcp[i][j] = min(s[i - 1] == s[j - 1] ? lcp[i + 1][j + 1] + 1 : 0, i - j);
if(!nxt[i][lcp[i][j]]) nxt[i][lcp[i][j]] = j;
}
for(int j = n; j >= 1; j--) nxt[i][j] = max(nxt[i][j], nxt[i][j + 1]);
}
vector<vector<int>> dp(n + 2, vector<int>(n + 2, 1e18));
for(int i = 1; i <= n; i++) dp[i][i] = a;
for(int len = 1; len <= n; len++){
for(int i = 1; i + len - 1 <= n; i++){
int j = i + len - 1;
dp[i][j] = min({dp[i][j], dp[i + 1][j] + a, dp[i][j - 1] + a});
for(int k = 1, p = nxt[i][len]; p; k++, p = nxt[p][len]) dp[p][j] = min(dp[p][j], dp[i][j] + b + (k + 1) * c + (j - p + 1 - (k + 1) * len) * a);
}
}
cout << dp[1][n];
}