#include <bits/stdc++.h>
using namespace std;
char s[5001], caracter[12502502];
short int end_pos[12502502];
int nodes = 1, n;
int last[12502502], Next[12502502];
int getID(int cur, int c) {
  for (int to = last[cur]; to != -1; to = Next[to])
    if (caracter[to] == c) return to;
  return -1;
}
void add(int pos) {
  int cur = 0;
  for (int i = pos, c, nxt; s[i]; i++) {
    c = s[i] - 'a';
    nxt = getID(cur, c);
    if (nxt == -1)
      caracter[nodes] = c, Next[nodes] = last[cur], end_pos[nodes] = i,
      last[cur] = nodes, cur = nodes++;
    else
      cur = nxt;
  }
}
int memo[5001], a, b;
int DP(int pos) {
  if (pos == n) return 0;
  int &ret = memo[pos];
  if (ret != -1) return ret;
  int ans = a + DP(pos + 1);
  int cur = 0;
  char c;
  for (int i = pos, nxt; i < n; i++) {
    c = s[i] - 'a';
    cur = getID(cur, c);
    if (end_pos[cur] >= pos) break;
    ans = min(ans, b + DP(i + 1));
  }
  return ret = ans;
}
int main() {
  cin >> n >> a >> b;
  scanf("%s", s);
  memset(last, -1, sizeof last);
  for (int i = 0; i < n; i++) add(i);
  memset(memo, -1, sizeof memo);
  int ans = DP(0);
  cout << ans << endl;
}
