#include <bits/stdc++.h>
using namespace std;
int v[26], dp[1004], n, x, y, i, nr;
char s[1004];
int main() {
  scanf("%d\n%s", &n, &s);
  for (i = 1; i <= 26; i++) scanf("%d", &v[i]);
  dp[0] = 1;
  for (i = 1; i <= n; i++) {
    y = 0;
    for (x = i - 1; x >= 0; x--) {
      if (y < i - v[s[x] - 'a' + 1]) y = i - v[s[x] - 'a' + 1];
      if (y <= x) {
        dp[i] = (dp[i] + dp[x]) % 1000000007;
        if (nr < i - x) nr = i - x;
      }
    }
  }
  printf("%d\n%d\n", dp[n], nr);
  x = nr = 0;
  y = v[s[0] - 'a' + 1];
  x = 1;
  for (i = 1; i < n; i++) {
    y = min(y, v[s[i] - 'a' + 1]);
    if (y < x + 1) {
      x = 1;
      y = v[s[i] - 'a' + 1];
      nr++;
    } else {
      x++;
    }
  }
  printf("%d", nr + 1);
  return 0;
}
