#include <bits/stdc++.h>
using namespace std;
int go[300001], dp[300001], z[300001];
int main() {
  int n, a, b;
  cin >> n >> a >> b;
  string s;
  cin >> s;
  for (int i = 0; i < n; i++) {
    z[0] = 0;
    int maxi = 0;
    int l = 0;
    for (int j = 1; j < s.size(); j++) {
      if (maxi < j) {
        int ans = 0;
        int t = j;
        while (t < s.size() && s[t] == s[ans]) {
          ans++;
          t++;
        }
        z[j] = ans;
        maxi = z[j] + j;
        l = j;
      } else {
        if (l + z[l] != j + z[j - l]) {
          z[j] = min(z[j - l], z[l] - (j - l));
          if (maxi < z[j] + j) {
            maxi = z[j] + j;
            l = j;
          }
        } else {
          int ans = z[j - l];
          int t = maxi;
          while (t < s.size() && s[t] == s[ans]) {
            ans++;
            t++;
          }
          z[j] = ans;
          maxi = z[j] + j;
          l = j;
        }
      }
    }
    for (int j = 1; j < s.size(); j++) {
      go[j + i] = max(go[j + i], min(z[j], j));
    }
    s.erase(0, 1);
  }
  dp[0] = a;
  for (int i = 1; i < n; i++) {
    dp[i] = 1e9;
  }
  for (int i = 1; i < n; i++) {
    for (int j = 0; j < i; j++) {
      if (go[j + 1] >= i - j) {
        dp[i] = min(dp[i], dp[j] + b);
      }
      dp[i] = min(dp[i], dp[i - 1] + a);
    }
  }
  cout << dp[n - 1] << "\n";
}
