#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int n, a, b;
  cin >> n >> a >> b;
  string s;
  cin >> s;
  auto check = [&](int l, int r) -> bool {
    if (r == n) return false;
    vector<int> kmp(r - l + 1, 0);
    for (int i = 1; i < r - l + 1; i++) {
      int j = kmp[i - 1];
      while (j > 0 && s[j + l] != s[i + l]) {
        j = kmp[j - 1];
      }
      if (s[j + l] == s[i + l]) j++;
      kmp[i] = j;
    }
    int ptr = 0;
    for (int i = 0; i < l; i++) {
      while (ptr > 0 && s[i] != s[l + ptr]) {
        ptr = kmp[ptr - 1];
      }
      if (s[i] == s[l + ptr]) ptr++;
      if (ptr == r - l + 1) return true;
    }
    return false;
  };
  vector<ll> dp(n, 1e18);
  dp[0] = a;
  int i = 1;
  vector<bool> ok(26, 0);
  ok[s[0] - 'a'] = true;
  for (int i = 1; i < n; i++) {
    dp[i] = min(dp[i], dp[i - 1] + a);
    if (!ok[s[i] - 'a']) {
      ok[s[i] - 'a'] = true;
      continue;
    }
    int l = i, r = n;
    while (l + 1 < r) {
      int mid = (l + r) / 2;
      if (check(i, mid))
        l = mid;
      else
        r = mid;
    }
    for (int j = i; j <= l; j++) {
      dp[j] = min(dp[j], dp[i - 1] + b);
    }
  }
  cout << dp[n - 1];
  return 0;
}
