#include <bits/stdc++.h>
using namespace std;
long long int n, s, k, A[55], tut[55], mx, dp[55][5][2005][55];
char st[55];
long long int dfs(int node, int ty, int hak, int sev) {
  long long int cev = 10000000000000000;
  if (hak >= k) return 0;
  if (sev == mx) return 10000000000000000;
  if (~dp[node][ty][hak][sev]) return dp[node][ty][hak][sev];
  for (int i = 1; i <= n; i++) {
    if (tut[i] != ty && A[i] > sev)
      cev = min(cev, dfs(i, tut[i], hak + A[i], A[i]) + abs(node - i));
  }
  return dp[node][ty][hak][sev] = cev;
}
int main() {
  memset(dp, -1, sizeof(dp));
  scanf("%lld %lld %lld", &n, &s, &k);
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &A[i]);
    mx = max(mx, A[i]);
  }
  scanf("%s", st + 1);
  for (int i = 1; i <= n; i++) {
    if (st[i] == 'R') tut[i] = 1;
    if (st[i] == 'G') tut[i] = 2;
    if (st[i] == 'B') tut[i] = 3;
  }
  long long int tyyt = 10000000000000000;
  for (int i = 1; i <= n; i++) {
    tyyt = min(tyyt, dfs(i, tut[i], A[i], A[i]) + abs(s - i));
  }
  if (tyyt >= 10000000000000000) tyyt = -1;
  printf("%lld\n", tyyt);
  return 0;
}
