#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e18;
const int32_t M = 1e9 + 7;
const int32_t mod = 1e9 + 7;
const int32_t MM = 998244353;
long long mod_add(long long a, long long b, long long m) {
  a = a % m;
  b = b % m;
  return (((a + b) % m) + m) % m;
}
long long mod_mul(long long a, long long b, long long m) {
  a = a % m;
  b = b % m;
  return (((a * b) % m) + m) % m;
}
long long mod_sub(long long a, long long b, long long m) {
  a = a % m;
  b = b % m;
  return (((a - b) % m) + m) % m;
}
bool prime[100000];
void checker() {
  long long n = 1e18;
  string nn = to_string(n);
  long long cnt = 0;
  while (n > 0) {
    cnt++;
    n = n - (double(n) / (10));
  }
  cout << "loops runs  (" << cnt << ") times for n=" << nn << endl;
}
vector<int> arr(100);
vector<vector<int>> g(100);
vector<vector<int>> dp(100, vector<int>(2010));
string str;
int n;
int dpp(int i, int cnt) {
  cnt = cnt - arr[i];
  if (cnt <= 0) return 0;
  if (dp[i][cnt] != -1) {
    return dp[i][cnt];
  }
  int ans = 1e9;
  for (int j = 1; j <= n; j++) {
    if (arr[i] < arr[j] and str[i - 1] != str[j - 1])
      ans = min(ans, dpp(j, cnt) + abs(j - i));
  }
  return dp[i][cnt] = ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int s, k;
  cin >> n >> s >> k;
  for (int i = 1; i <= n; i++) {
    cin >> arr[i];
  }
  cin >> str;
  int ans = 1e9;
  for (int i = 0; i < 100; i++) {
    for (int j = 0; j < 2010; j++) {
      dp[i][j] = -1;
    }
  }
  for (int i = 1; i <= n; i++) {
    ans = min(ans, dpp(i, k) + abs(s - i));
  }
  if (ans == 1e9) {
    cout << -1 << endl;
  } else {
    cout << ans << endl;
  }
}
