#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, a, b;
  cin >> n >> a >> b;
  string s;
  cin >> s;
  vector<vector<bool> > g(n, vector<bool>(n, false));
  vector<int> pref(n + 1);
  string r = '#' + s;
  for (int i = 1; i < n; i++) {
    r = r[r.length() - 1] + r;
    r.erase((--r.end()));
    pref.assign(n + 1, 0);
    for (int j = 1; j <= n; j++) {
      if (r[j] == r[pref[j - 1]])
        pref[j] = pref[j - 1] + 1;
      else {
        int k = pref[j - 1];
        while (k > 0 && r[k] != r[j]) k = pref[k - 1];
        if (k >= 0 && r[k] == r[j]) pref[j] = k + 1;
      }
      if (pref[j] > 0 && j > i) {
        g[n - i][n - i + pref[j] - 1] = true;
      }
    }
  }
  vector<int> dp(n, INT_MAX);
  dp[n - 1] = 0;
  int ans = INT_MAX;
  for (int i = n - 1; i >= 0; i--) {
    if (i == 0)
      ans = min(ans, dp[i] + a);
    else
      dp[i - 1] = min(dp[i - 1], dp[i] + a);
    for (int j = i; j >= 0; j--) {
      if (g[j][i]) {
        if (j == 0)
          ans = min(ans, dp[i] + b);
        else
          dp[j - 1] = min(dp[j - 1], dp[i] + b);
      }
    }
  }
  cout << ans;
  return 0;
}
