#include <bits/stdc++.h>
using namespace std;
int DP[80][80][80][3];
string ST[80][80][80][3];
string s;
int n, i, j, k, I, J, K, TT[3];
int _(char x) {
  if (x == 'V') return 1;
  if (x == 'K') return 2;
  return 0;
}
int getI(string S, int ind, int ne) {
  if (S.size() != n) return 1000000000;
  for (int i = ind; i < n; i++)
    if (_(S[i]) == ne) return i - ind;
  return 1000000000;
}
string getS(string S, int ind, int ne) {
  if (S.size() != n) return S;
  int i = ind;
  while (i < n && _(S[i]) != ne) i++;
  if (i == n) return S;
  while (i != ind) {
    swap(S[i], S[i - 1]);
    i--;
  }
  return S;
}
int main() {
  cin >> n >> s;
  for (i = 0; i < n; i++) TT[_(s[i])]++;
  for (i = 0; i <= TT[0]; i++)
    for (j = 0; j <= TT[1]; j++)
      for (k = 0; k <= TT[2]; k++)
        for (int ls = 0; ls < 3; ls++) DP[i][j][k][ls] = 1000000000;
  ST[1][0][0][0] = getS(s, 0, 0);
  ST[0][1][0][1] = getS(s, 0, 1);
  ST[0][0][1][2] = getS(s, 0, 2);
  DP[1][0][0][0] = getI(s, 0, 0);
  DP[0][1][0][1] = getI(s, 0, 1);
  DP[0][0][1][2] = getI(s, 0, 2);
  for (i = 0; i <= TT[0]; i++)
    for (j = 0; j <= TT[1]; j++)
      for (k = 0; k <= TT[2]; k++)
        for (int ls = 0; ls < 3; ls++)
          for (int ne = 0; ne < 3; ne++)
            if (ls + 2 * ne != 5) {
              I = i;
              J = j;
              K = k;
              if (ne == 0) I++;
              if (ne == 1) J++;
              if (ne == 2) K++;
              if (DP[I][J][K][ne] >
                  DP[i][j][k][ls] + getI(ST[i][j][k][ls], i + j + k, ne)) {
                DP[I][J][K][ne] =
                    DP[i][j][k][ls] + getI(ST[i][j][k][ls], i + j + k, ne);
                ST[I][J][K][ne] = getS(ST[i][j][k][ls], i + j + k, ne);
              }
            }
  int res = 1000000000;
  for (i = 0; i < 3; i++) res = min(res, DP[TT[0]][TT[1]][TT[2]][i]);
  cout << res << endl;
  return 0;
}
