#include <bits/stdc++.h>
using namespace std;
using namespace chrono;
int label(char c) { return c == 'R' ? 0 : c == 'Y' ? 1 : 2; }
void chmin(int& x, int y) { x = min(x, y); }
int dp[401][401][401][3];
int main() {
int n; string s; cin >> n >> s;
vector<int> pos[3];
for (int i = 0; i < n; i++) {
pos[label(s[i])].push_back(i);
}
int m0 = pos[0].size(), m1 = pos[1].size(), m2 = pos[2].size();
memset(dp, 0x3f, sizeof dp);
memset(dp[0][0][0], 0, sizeof dp[0][0][0]);
int p[3];
for (p[0] = 0; p[0] <= m0; p[0]++) {
for (p[1] = 0; p[1] <= m1; p[1]++) {
for (p[2] = 0; p[2] <= m2; p[2]++) {
if (p[0] + p[1] + p[2] == m0 + m1 + m2) break;
for (int l = 0; l < 3; l++) {
for (int x = 0; x < 3; x++) {
if (x == l || p[x] == pos[x].size()) continue;
int y = (x+1) % 3;
int z = (y+1) % 3;
int opers = 0;
for (int i = 0; i < p[y]; i++) {
opers += pos[x][p[x]] < pos[y][i];
}
for (int i = 0; i < p[z]; i++) {
opers += pos[x][p[x]] < pos[z][i];
}
int np[3] = {p[0], p[1], p[2]};
np[x]++;
chmin(dp[ np[0] ][ np[1] ][ np[2] ][x], dp[ p[0] ][ p[1] ][ p[2] ][l] + opers);
np[x]--;
}
}
}
}
}
int ans = *min_element(dp[m0][m1][m2], dp[m0][m1][m2] + 3);
cout << (ans > 400*400*400 ? -1 : ans);
}