#include <bits/stdc++.h>
using namespace std;
template <class T>
T abs(T x) {
  return x > 0 ? x : -x;
}
template <class T>
T gcd(T a, T b) {
  return a ? gcd(b % a, a) : b;
}
template <class T>
T sqr(T a) {
  return a * a;
}
template <class T>
T sgn(T a) {
  return a > 0 ? 1 : (a < 0 ? -1 : 0);
}
const double pi = acos(-1.0);
int n;
int m;
int f[50][2501][3];
int main() {
  int s, k;
  cin >> n >> s >> k;
  vector<pair<int, int> > a(n);
  for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    a[i] = make_pair(x, i);
  }
  sort((a).begin(), (a).end());
  string b;
  cin >> b;
  for (int i = 0; i < n; i++)
    if (b[i] == 'R')
      b[i] = 0;
    else if (b[i] == 'B')
      b[i] = 1;
    else
      b[i] = 2;
  int pos = 0;
  memset(f, 64, sizeof(f));
  for (int i = 0; i < n; i++) {
    if (a[i].second == s - 1) {
      pos = i;
    }
  }
  for (int i = 0; i < n; i++) {
    f[i][a[i].first][b[a[i].second]] = abs(a[i].second - a[pos].second);
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < i; j++) {
      if (a[j].first == a[i].first) break;
      for (int t = 0; t <= 2500; t++) {
        for (int c = 0; c < 3; c++) {
          if (c == b[a[i].second] || t + a[i].first > 2500) continue;
          f[i][t + a[i].first][b[a[i].second]] =
              min(f[i][t + a[i].first][b[a[i].second]],
                  f[j][t][c] + abs(a[j].second - a[i].second));
        }
      }
    }
  }
  int ans = 1e9;
  for (int i = 0; i < n; i++)
    for (int t = k; t <= 2500; t++)
      for (int c = 0; c < 3; c++) ans = min(ans, f[i][t][c]);
  if (ans == 1e9)
    cout << -1 << endl;
  else
    cout << ans << endl;
  return 0;
}
