#include <bits/stdc++.h>
using namespace std;
const int N = 100;
const int K = 1e4;
const int INF = 0x3f3f3f3f;
int n, st, k, f[N + 10][K + 10];
char s[N + 10];
struct data {
  int va, x;
} a[N + 10];
bool cmp(data p, data q) { return p.va < q.va; }
int Abs(int x) { return (x < 0) ? (-x) : x; }
int main() {
  scanf("%d%d%d", &n, &st, &k);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i].va);
    a[i].x = i;
  }
  scanf("%s", s + 1);
  sort(a + 1, a + n + 1, cmp);
  a[0].x = st;
  memset(f, 0x3f, sizeof(f));
  f[0][0] = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j <= k; j++) {
      if (f[i][j] == INF) continue;
      for (int i2 = i + 1; i2 <= n; i2++) {
        if (i && (s[a[i2].x] == s[a[i].x] || a[i].va == a[i2].va)) continue;
        f[i2][min(j + a[i2].va, k)] =
            min(f[i2][min(j + a[i2].va, k)], f[i][j] + Abs(a[i].x - a[i2].x));
      }
    }
  }
  int min0 = INF;
  for (int i = 1; i <= n; i++) min0 = min(min0, f[i][k]);
  if (min0 == INF)
    printf("-1\n");
  else
    printf("%d\n", min0);
  return 0;
}
