#include <bits/stdc++.h>
using namespace std;
void getz(string s, int z[]) {
  int n = s.size(), l = 0, r = 0, k, i, j;
  for (i = 1; i < n; ++i) {
    if (i > r) {
      l = r = i;
      while (r < n && s[r - l] == s[r]) r++;
      z[i] = r - l;
      r--;
    } else {
      k = i - l;
      if (z[k] < r - i + 1)
        z[i] = z[k];
      else {
        l = i;
        while (r < n && s[r - l] == s[r]) r++;
        z[i] = r - l;
        r--;
      }
    }
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n, a, b, i, j;
  cin >> n >> a >> b;
  string s, t;
  cin >> s;
  int dp[n];
  dp[0] = a;
  for (i = 1; i < n; ++i) {
    dp[i] = a + dp[i - 1];
    t = s.substr(0, i + 1);
    reverse(t.begin(), t.end());
    int z[t.size()];
    z[0] = 0;
    getz(t, z);
    for (j = 1; j < t.size(); ++j) {
      if (z[j] <= j) dp[i] = min(dp[i], b + dp[t.size() - z[j] - 1]);
    }
  }
  cout << dp[n - 1];
  return 0;
}
