#include <bits/stdc++.h>
using namespace std;

#define int             long long int
#define ld              long double
#define ff              first
#define ss              second
#define pb              push_back

#define vi              vector <int>
#define pii             pair <int, int>
#define vpii            vector <pii>
#define mii             map <int, int>

#define loop(i,s,e)     for(int i=s;i<e;i++)
#define rloop(i,e,s)    for(int i=e;i>=s;i--)
#define mset(a,f)       memset(a,f,sizeof(a))

#define endl            "\n"
#define M               1000000007
#define sz(x)           ((int) x.size())

#define all(p)          p.begin(), p.end()
#define que_max         priority_queue <int>
#define que_min         priority_queue <int, vi, greater<int>>

#define bug(...)        __f (#__VA_ARGS__, __VA_ARGS__)
#define print(a)        for (auto x : a) cout << x << " ";cout << endl
#define Print(a,x,y)    for (int i=x; i<y; i++) cout<< a[i]<< " "; cout << endl

inline int power(int a, int b)
{
	int x = 1;
	while (b)
	{
		if (b & 1) x *= a;
		a *= a;
		b >>= 1;
	}
	return x;
}

template <typename Arg1>
void __f (const char* name, Arg1&& arg1) { cout << name << " : " << arg1 << endl; }
template <typename Arg1, typename... Args>
void __f (const char* names, Arg1&& arg1, Args&&... args)
{
	const char* comma = strchr (names + 1, ',');
	cout.write (names, comma - names) << " : " << arg1 << " | "; __f (comma + 1, args...);
}

const int N = 2e5 + 3;
// 1=r,2=g,3=b
void solve()
{
	int n;
	cin >> n;
	string s;
	cin >> s;
	int ans = 0;
	int s1[n], s2[n], s3[n];
	mset(s1, 0);
	mset(s2, 0);
	mset(s3, 0);
	if (s[n - 1] == 'R') s1[n - 1] = 1;
	else if (s[n - 1] == 'G') s2[n - 1] = 1;
	else s3[n - 1] = 1;
	rloop(i, n - 2, 0)
	{
		if (s[i] == 'R')
		{
			s1[i] = s1[i + 1] + 1;
			s2[i] = s2[i + 1];
			s3[i] = s3[i + 1];
		}
		else if (s[i] == 'G')
		{
			s2[i] = s2[i + 1] + 1;
			s1[i] = s1[i + 1];
			s3[i] = s3[i + 1];
		}
		else if (s[i] == 'B')
		{
			s3[i] = s3[i + 1] + 1;
			s1[i] = s1[i + 1];
			s2[i] = s2[i + 1];

		}
	}



	loop(i, 0, n)
	{
		loop(j, i + 1, n)
		{
			int f1 = 0, f2 = 0, f3 = 0;

			if (s[i] == s[j]) continue;
			int d = j - i;
			int c;
			if (s[i] == 'R' or s[j] == 'R') f1 = 1;
			if (s[i] == 'G' or s[j] == 'G') f2 = 1;
			if (s[i] == 'B' or s[j] == 'B') f3 = 1;
			if (f1 and f2) c = 3;
			if (f2 and f3) c = 1;
			if (f1 and f3) c = 2;

			if (c == 1)
			{
				if (j + 1 < n)
				{
					int x = s1[j + 1];
					//bug(i, j, x);
					ans += x;
					if (j + d < n and s[j + d] == 'R') ans--;
				}
			}
			if (c == 2)
			{
				if (j + 1 < n)
				{
					int x = s2[j + 1];
					//bug(i, j, x);
					ans += x;
					if (j + d < n and s[j + d] == 'G') ans--;
				}
			}
			if (c == 3)
			{
				if (j + 1 < n)
				{
					int x = s3[j + 1];
					//bug(i, j, x);
					ans += x;
					if (j + d < n and s[j + d] == 'B') ans--;
				}
			}


		}
	}
	cout << ans;

	return;
}

int32_t main()
{
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);



	//cout << setprecision(9) << fixed;
	clock_t z = clock();
	int t = 1;
	//cin >> t;
	while (t--)
	{
		solve();
	}
	cerr << "Total Time : " << ((double)(clock() - z) / CLOCKS_PER_SEC);

	return 0;
}


Measured memory_bytes: 3864