#include <bits/stdc++.h>
using namespace std;
void IO() {
  mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
}
long long int n, s, k;
long long int dp[2505][52];
int M = 2505;
vector<long long int> arr;
string st;
int main() {
  IO();
  cin >> n >> s >> k;
  arr.resize(n);
  for (__typeof(n) i = (0) - ((0) > (n)); i != (n) - ((0) > (n));
       i += 1 - 2 * ((0) > (n)))
    cin >> arr[i];
  cin >> st;
  for (__typeof(n) i = (0) - ((0) > (n)); i != (n) - ((0) > (n));
       i += 1 - 2 * ((0) > (n))) {
    for (__typeof(M) j = (0) - ((0) > (M)); j != (M) - ((0) > (M));
         j += 1 - 2 * ((0) > (M)))
      dp[j][i] = 1e9;
  }
  s--;
  for (__typeof(n) i = (0) - ((0) > (n)); i != (n) - ((0) > (n));
       i += 1 - 2 * ((0) > (n))) {
    dp[arr[i]][i] = min(dp[arr[i]][i], abs(i - s));
  }
  for (__typeof(M) i = (1) - ((1) > (M)); i != (M) - ((1) > (M));
       i += 1 - 2 * ((1) > (M))) {
    for (__typeof(n) j = (0) - ((0) > (n)); j != (n) - ((0) > (n));
         j += 1 - 2 * ((0) > (n))) {
      for (__typeof(n) k = (0) - ((0) > (n)); k != (n) - ((0) > (n));
           k += 1 - 2 * ((0) > (n))) {
        if (st[k] != st[j] && arr[j] > arr[k] && i - arr[j] >= 0)
          dp[i][j] = min(dp[i][j], dp[i - arr[j]][k] + abs(j - k));
      }
    }
  }
  long long int ans = 1e9;
  for (__typeof(M) i = (k) - ((k) > (M)); i != (M) - ((k) > (M));
       i += 1 - 2 * ((k) > (M))) {
    for (__typeof(n) j = (0) - ((0) > (n)); j != (n) - ((0) > (n));
         j += 1 - 2 * ((0) > (n))) {
      ans = min(ans, dp[i][j]);
    }
  }
  if (ans != (long long int)1e9)
    cout << ans << "\n";
  else
    cout << -1 << "\n";
  return 0;
}
