#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <string>
#include <cmath>
#include <set>
#include <bitset>
#include <limits>

using namespace std;

#define ll long long

// int check(int i, int j, int k){
//     int flag = 1;
//     if(j-i == k-j){
//         flag = 0;
//     }else if(k-i == j-k){
//         flag = 0;
//     }else if(i-j == k-i){
//         flag = 0;
//     }else if(j-k == i-j){
//         flag = 0;
//     }else if(i-k == j-i){
//         flag = 0;
//     }else if(k-j == i-k){
//         flag = 0;
//     }

//     return flag;
// }

int main(void){
    int n;
    cin >> n;
    string s;
    cin >> s;
    cout << s.max_size() << endl;

    vector<int> r, g, b;

    r.reserve(n);
    g.reserve(n);
    b.reserve(n);

    for(int i = 0;i < n;++i){
        if(s[i] == 'R'){
            r.push_back(i+1);
        }else if(s[i] == 'G'){
            g.push_back(i+1);
        }else{
            b.push_back(i+1);
        }
    }

    sort(b.begin(), b.end());

    ll ans = 0;
    for(int ri = 0;ri < (int)r.size();++ri){
        for(int gi = 0;gi < (int)g.size();++gi){
            ans += (ll)b.size();
            int i, j;
            if(r[ri] > g[gi]){
                i = g[gi];
                j = r[ri];
            }else{
                i = r[ri];
                j = g[gi];
            }

            if(binary_search(b.begin(), b.end(), 2*i-j)){
                ans -= 1LL;
            }
            if((i+j)%2 == 0){
                if(binary_search(b.begin(), b.end(), (i+j)/2)){
                    ans -= 1LL;
                }
            }
            if(binary_search(b.begin(), b.end(), 2*j-i)){
                ans -= 1LL;
            }
        }
    }

    cout << ans << endl;

    return 0;
}