#include <bits/stdc++.h>
using namespace std;
int n, s, kk;
int color[100];
int dp[100][2020];
struct node {
  int id;
  int val;
};
bool cmp(node a, node b) { return a.val < b.val; }
node aa[100];
int main() {
  cin >> n >> s >> kk;
  int tmp;
  for (int i = 1; i <= n; i++) {
    cin >> tmp;
    aa[i] = (node){i, tmp};
  }
  for (int i = 1; i <= n; i++) {
    char c;
    cin >> c;
    if (c == 'R')
      color[i] = 0;
    else if (c == 'G')
      color[i] = 1;
    else if (c == 'B')
      color[i] = 2;
  }
  sort(aa + 1, aa + 1 + n, cmp);
  for (int i = 0; i < 100; i++) {
    for (int j = 0; j < 2020; j++) {
      dp[i][j] = 0x3f3f3f3f;
    }
  }
  for (int i = n; i >= 1; i--) {
    int fi = abs(aa[i].id - s);
    for (int j = 0; j <= aa[i].val; j++) dp[i][j] = 0;
    for (int j = i + 1; j <= n; j++) {
      if (color[aa[i].id] == color[aa[j].id] || aa[i].val == aa[j].val)
        continue;
      for (int k = 0; k < 2020; k++) {
        if (aa[i].val <= k) {
          for (int q = 0; q <= k; q++) {
            dp[i][q] =
                min(dp[i][q], abs(aa[j].id - aa[i].id) + dp[j][k - aa[i].val]);
          }
        }
      }
    }
  }
  int mn = 0x3f3f3f3f;
  for (int i = 1; i <= n; i++) {
    mn = min(mn, abs(s - aa[i].id) + dp[i][kk]);
  }
  if (mn == 0x3f3f3f3f) mn = -1;
  cout << mn << endl;
}
