#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 5, mod = 998244353;
template <class o>
inline void qr(o &x) {
  x = 0;
  char c = getchar();
  int f = 1;
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    x = x * 10 + (c ^ 48);
    c = getchar();
  }
  x *= f;
}
template <class o>
void qw(o x) {
  if (x / 10) qw(x / 10);
  putchar(x % 10 + 48);
}
template <class o>
void pr1(o x) {
  if (x < 0) putchar('-'), x = -x;
  qw(x);
  putchar(' ');
}
template <class o>
void pr2(o x) {
  if (x < 0) putchar('-'), x = -x;
  qw(x);
  puts("");
}
inline int ksm(int a, int b = mod - 2) {
  int ans = 1;
  for (; b; b >>= 1, a = 1ll * a * a % mod)
    if (b & 1) ans = 1ll * ans * a % mod;
  return ans;
}
inline int add(int a, int b) { return a += b, a >= mod ? a - mod : a; }
inline int sub(int a, int b) { return a -= b, a < 0 ? a + mod : a; }
struct state {
  int link, len;
  int nxt[26];
} st[N << 1];
int cnt, last, u;
void init() {
  memset(st, 0, sizeof(state[cnt + 1]));
  cnt = 0;
  last = 0;
  st[0].link = -1;
  st[0].len = 0;
}
inline void insert(int c) {
  int cur = ++cnt, p = last;
  st[cur].len = st[p].len + 1;
  for (; (~p) && !st[p].nxt[c]; p = st[p].link) st[p].nxt[c] = cur;
  if (~p) {
    int q = st[p].nxt[c];
    if (st[q].len == st[p].len + 1) {
      st[cur].link = q;
    } else {
      int clone = ++cnt;
      st[clone] = st[q];
      st[clone].len = st[p].len + 1;
      for (; (~p) && st[p].nxt[c] == q; p = st[p].link) st[p].nxt[c] = clone;
      st[cur].link = st[q].link = clone;
    }
  }
  last = cur;
}
char s[N];
long long f[N];
void solve() {
  init();
  int n;
  int p, q;
  qr(n), qr(p), qr(q);
  scanf("%s", s + 1);
  int r = 2, l = 1;
  f[1] = p;
  insert(s[1] - 'a');
  u = 0;
  while (r <= n) {
    f[r] = f[r - 1] + p;
    int c = s[r] - 'a';
    while (233) {
      while (u && st[st[u].link].len >= r - l - 1) u = st[u].link;
      if (st[u].nxt[c]) {
        u = st[u].nxt[c];
        break;
      } else
        insert(s[++l] - 'a');
    }
    f[r] = min(f[r], f[l] + q);
    ++r;
  }
  printf("%lld\n", f[n]);
}
int main() {
  solve();
  return 0;
}
