#include <bits/stdc++.h>
const int MAXINT = 2147483640;
const long long MAXLL = 9223372036854775800LL;
const long long MAXN = 1e6 + 2e5;
const double eps = 1e-9;
const long long mod = 1e9 + 7;
using namespace std;
long long dp[MAXN];
int main() {
  srand(time(0));
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  ;
  long long n, a1, b1;
  cin >> n >> a1 >> b1;
  string s;
  cin >> s;
  for (int i = 1; i <= n; ++i) dp[i] = 1e18;
  string ss;
  for (int i = 0; i < n; ++i) {
    ss = s.substr(i + 1);
    ss += '#';
    ss += s.substr(0, i + 1);
    vector<long long> z(ss.size());
    long long l = 0, r = 0;
    for (int j = 1; j < ss.size(); ++j) {
      if (j <= r) z[j] = min(z[j - l], r - j + 1);
      while (j + z[j] < ss.size() && ss[z[j]] == ss[j + z[j]]) z[j]++;
      if (j + z[j] - 1 > r) {
        r = j + z[j] - 1;
        l = j;
      }
    }
    long long mx = 0;
    for (int j = n - i; j < ss.size(); ++j) {
      mx = max(z[j], mx);
    }
    dp[i + 1] = min(dp[i + 1], dp[i] + a1);
    for (int j = i + 1; j <= i + mx; ++j) dp[j] = min(dp[j], dp[i] + b1);
  }
  cout << dp[n] << "\n";
  return 0;
}
