#include <bits/stdc++.h>
using namespace std;
int dp[53][3003][4];
string str;
int c[53], r[53];
int main() {
  int n, s, k;
  cin >> n >> s >> k;
  memset(dp, 127, sizeof(dp));
  for (int i = 1; i <= n; ++i) {
    cin >> r[i];
  }
  cin >> str;
  for (int i = 1; i <= n; ++i) {
    c[i] = (str[i - 1] == 'R') ? 1 : ((str[i - 1] == 'G') ? 2 : 3);
  }
  int inf = 1000000000;
  dp[s][0][0] = 0;
  dp[s][r[s]][c[s]] = 0;
  for (int x = 1; x <= n * 50; ++x) {
    for (int i = 1; i <= n; ++i) {
      for (int j = 1; j <= n; ++j) {
        if (x >= r[i] && c[i] != c[j] && r[i] > r[j] &&
            dp[j][x - r[i]][c[j]] < inf)
          dp[i][x][c[i]] =
              min(dp[i][x][c[i]], dp[j][x - r[i]][c[j]] + abs(i - j));
        if (dp[j][x - r[i]][0] < inf) {
          dp[i][x][c[i]] = min(dp[i][x][c[i]], dp[j][x - r[i]][0] + abs(i - j));
        }
      }
    }
  }
  for (int x = k; x <= n * 50; ++x)
    for (int i = 1; i <= n; ++i)
      for (int j = 0; j <= 3; ++j) inf = min(inf, dp[i][x][j]);
  cout << ((inf < 1000000000) ? (inf) : (-1)) << endl;
  return 0;
}
