#include <bits/stdc++.h>
using namespace std;
const int N = 55;
int n, ss, k, dp[N][N][2002];
pair<pair<int, int>, int> a[N];
string str;
bool found;
int solve(int i, int lst, int take) {
  if (take >= k) {
    found = 1;
    return 0;
  }
  if (i > n) return 1e8;
  if (dp[i][lst][take] != -1) return dp[i][lst][take];
  int ans = solve(i + 1, lst, take);
  if (a[i].first.first > a[lst].first.first &&
      a[i].first.second != a[lst].first.second) {
    int ds = 0;
    if (lst) ds = abs(a[i].second - a[lst].second);
    ans = min(ans, ds + solve(i + 1, i, take + a[i].first.first));
  }
  return dp[i][lst][take] = ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  memset(dp, -1, sizeof(dp));
  cin >> n >> ss >> k;
  for (int i = 1; i <= n; i++) {
    int x;
    cin >> x;
    a[i].first.first = x;
  }
  cin >> str;
  for (int i = 1; i <= n; i++) {
    if (str[i - 1] == 'R')
      a[i].first.second = 1;
    else if (str[i - 1] == 'G')
      a[i].first.second = 2;
    else
      a[i].first.second = 3;
    a[i].second = i;
  }
  sort(a + 1, a + n + 1);
  int ans = 1e9;
  for (int i = 1; i <= n; i++) {
    ans = min(ans, abs(ss - a[i].second) + solve(i + 1, i, a[i].first.first));
  }
  if (!found)
    cout << "-1\n";
  else
    cout << ans << '\n';
  return 0;
}
