#include <bits/stdc++.h>
const int MAX_N = 50 + 7;
const int INF = 0x3f3f3f3f;
int n, s, k;
int ord[MAX_N], r[MAX_N];
std::string colour;
int memo[2][MAX_N][MAX_N][2007];
int go(const bool& st, const int& cur, const int& lst, const int& k_left) {
  if (k_left <= 0) return 0;
  if (cur >= n) return INF;
  int& ret = memo[st][cur][lst][k_left];
  if (ret != -1) return ret;
  ret = INF;
  if (st || (colour[lst] != colour[ord[cur]] && r[lst] < r[ord[cur]]))
    ret = std::min(ret, std::abs((st ? s : lst) - ord[cur]) +
                            go(false, cur + 1, ord[cur], k_left - r[ord[cur]]));
  ret = std::min(ret, go(st, cur + 1, lst, k_left));
  return ret;
}
int main(void) {
  std::ios::sync_with_stdio(0);
  std::cin.tie(0);
  std::cin >> n >> s >> k;
  --s;
  for (int i = 0; i < n; ++i) std::cin >> r[ord[i] = i];
  std::cin >> colour;
  std::sort(ord, ord + n,
            [&](const int& a, const int& b) { return r[a] < r[b]; });
  memset(memo, 0xff, sizeof(memo));
  int ans = go(true, 0, n, k);
  if (ans >= INF) ans = -1;
  std::cout << ans << "\n";
  return 0;
}
