#include <bits/stdc++.h>
using namespace std;
const long long mod0 = 1e9 + 7;
const long long mod1 = 98244353;
const long long mod2 = 1e9 + 9;
const long long mod3 = 2147483647;
const int maxn = 1e5 + 1;
int n;
void init() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cout.precision(16);
}
int main() {
  init();
  int t, k;
  cin >> n >> t >> k;
  t--;
  vector<int> a(n);
  for (int i = 0; i < n; ++i) cin >> a[i];
  vector<vector<int>> g(n);
  string str;
  cin >> str;
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
      if (a[j] > a[i] && str[j] != str[i]) g[i].push_back(j);
    }
  }
  vector<vector<int>> dp(n, vector<int>(3000, 2e9));
  for (int i = 0; i < n; ++i) dp[i][a[i]] = abs(i - t);
  for (int i = 0; i < n; ++i) {
    for (int i = 0; i < n; ++i) {
      vector<vector<int>> dp0 = dp;
      for (int j = 0; j < 3000; ++j) {
        if (dp0[i][j] == 2e9) continue;
        for (int u : g[i]) {
          dp[u][j + a[u]] = min(dp0[u][j + a[u]], abs(i - u) + dp0[i][j]);
        }
      }
    }
  }
  int ans = 2e9;
  for (int i = 0; i < n; ++i) {
    for (int j = k; j < 3000; ++j) ans = min(ans, dp[i][j]);
  }
  cout << (ans < 2e9 ? ans : -1) << endl;
  return 0;
}
