#include <bits/stdc++.h>
using namespace std;
int n, a, b;
char s[5050];
int dp[5050];
int h[5050];
void prepare(char *p) {
  int m = strlen(p);
  for (int i = 1, j = 0; i < m; i++) {
    while (j && p[i] != p[j]) j = h[j - 1];
    if (p[i] == p[j]) j++;
    h[i] = j;
  }
}
bool kmp_matching(char *t, char *p) {
  int n = strlen(t), m = strlen(p);
  for (int i = 0, j = 0; i < n; i++) {
    while (j && t[i] != p[j]) j = h[j - 1];
    if (t[i] == p[j]) j++;
    if (j == m) return 1;
  }
  return 0;
}
char t[5050], p[5050];
bool check(int l, int r) {
  for (int i = 1; i <= l; i++) t[i - 1] = s[i];
  t[l] = 0;
  for (int i = l + 1; i <= r; i++) p[i - l - 1] = s[i];
  p[r - l] = 0;
  prepare(p);
  return kmp_matching(t, p);
}
int main() {
  cin >> n >> a >> b >> (s + 1);
  for (int i = 1; i <= n; i++) {
    dp[i] = dp[i - 1] + a;
    if (i == 1) continue;
    int l = 1, r = i - 1;
    while (l < r) {
      int m = l + r >> 1;
      if (check(m, i))
        r = m;
      else
        l = m + 1;
    }
    if (!check(l, i)) continue;
    int cur = dp[l];
    for (int j = l + 1; j < i; j++) cur = min(cur, dp[j]);
    dp[i] = min(dp[i], cur + b);
  }
  printf("%d", dp[n]);
}
