#include <bits/stdc++.h>
using namespace std;
long long gcd(long long x, long long y) { return (y == 0) ? x : gcd(y, x % y); }
unsigned long long lcm(long long x, long long y) { return x / gcd(x, y) * y; }
int dy8[] = {0, 0, 1, -1, 1, -1, -1, 1};
int dx8[] = {1, -1, 0, 0, 1, -1, 1, -1};
int id8[] = {0, 1, 2, 3, 4, 5, 6, 7};
long long mod = 1000000007;
int n, s, k;
vector<int> v;
string c;
int mem[55][2005];
int solve(int i, int sum) {
  if (sum <= 0) return 0;
  int& ret = mem[i][sum];
  if (~ret) return ret;
  ret = 1e8;
  for (int j = 0; j < n; j++)
    if (v[j] > v[i] && c[i] != c[j])
      ret = min(ret, solve(j, sum - v[j]) + abs(i - j));
  return ret;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> s >> k;
  v.resize(n);
  for (int i = 0; i < n; i++) cin >> v[i];
  cin >> c;
  memset(mem, -1, sizeof mem);
  int ans = 1e8;
  s--;
  for (int i = 0; i < n; i++) {
    ans = min(ans, solve(i, k - v[i]) + abs(i - s));
  }
  cout << (ans == 1e8 ? -1 : ans) << '\n';
}
