#include <bits/stdc++.h>
using namespace std;
const int N = 54, M = 2504;
int f[N][M][3];
int a[N], n, s, k;
inline void MIN(int &a, int b) {
  if (b < a) a = b;
}
struct P {
  int v, id, c;
  bool operator<(const P &p) const { return v < p.v; }
} p[N];
char t[N];
int main() {
  scanf("%d %d %d", &n, &s, &k);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  scanf("%s", t + 1);
  memset(f, 0x3f, sizeof(f));
  for (int i = 1; i <= n; i++) {
    if (t[i] == 'R')
      t[i] = 0;
    else if (t[i] == 'G')
      t[i] = 1;
    else
      t[i] = 2;
    p[i] = P{a[i], i, t[i]};
  }
  sort(p + 1, p + n + 1);
  for (int i = 1; i <= n; i++) MIN(f[i][p[i].v][p[i].c], abs(p[i].id - s));
  int INF = 0x3f3f3f3f;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= k; j++)
      for (int r = 0; r < 3; r++) {
        if (f[i][j][r] == INF) continue;
        for (int s = i + 1; s <= n; s++) {
          if (p[s].v <= p[i].v || p[s].c == p[i].c) continue;
          MIN(f[s][min(k, j + p[s].v)][p[s].c],
              f[i][j][r] + abs(p[s].id - p[i].id));
        }
      }
  int ans = INF;
  for (int i = 1; i <= n; i++)
    for (int j = 0; j < 3; j++) ans = min(ans, f[i][k][j]);
  if (ans == INF) ans = -1;
  printf("%d\n", ans);
}
