#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > v;
string col;
vector<int> col2;
int dp[51][4][51][2003];
int f(int pos, int lastCol, int lastPos, int k) {
  if (k <= 0) return 0;
  if (pos == v.size()) return INT_MAX / 2;
  if (dp[pos][lastCol][lastPos][k] != -1) return dp[pos][lastCol][lastPos][k];
  int ans = f(pos + 1, lastCol, lastPos, k);
  if (col2[v[pos].second] != lastCol) {
    bool ok = (v[pos].first > v[lastPos].first);
    if (lastCol == 3) ok = 1;
    if (ok)
      ans =
          min(ans, abs(v[pos].second - v[lastPos].second) +
                       f(pos + 1, col2[v[pos].second], pos, k - v[pos].first));
  }
  return dp[pos][lastCol][lastPos][k] = ans;
}
int main() {
  memset(dp, -1, sizeof(dp));
  int n, s, k, inp;
  scanf("%d %d %d", &n, &s, &k);
  for (int i = 0; i < n; i++) {
    scanf("%d", &inp);
    v.push_back({inp, i});
  }
  cin >> col;
  for (int i = 0; i < col.size(); i++)
    if (col[i] == 'R')
      col2.push_back(0);
    else if (col[i] == 'G')
      col2.push_back(1);
    else
      col2.push_back(2);
  sort(v.begin(), v.end());
  int fidx;
  for (int i = 0; i < v.size(); i++)
    if (v[i].second == s - 1) fidx = i;
  int ans = f(0, 3, fidx, k);
  if (ans == INT_MAX / 2) ans = -1;
  cout << ans << '\n';
  return 0;
}
