#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 5;
int a[N];
struct {
struct node {
int pref, suff, sum, ans;
void merge(node& l, node& r) {
pref = max(l.pref, l.sum + r.pref);
suff = max(r.suff, r.sum + l.suff);
sum = l.sum + r.sum;
ans = max({l.ans + r.sum, l.sum + r.ans, l.pref + r.suff});
}
};
node t[4 * N];
void build(int v, int tl, int tr) {
if (tl == tr) {
if (a[tl] == 1) {
t[v].pref = t[v].suff = 1;
t[v].sum = 1, t[v].ans = 1;
} else {
t[v].pref = t[v].suff = 0;
t[v].sum = -1, t[v].ans = 0;
}
return;
}
int tm = (tl + tr) >> 1;
build(v << 1, tl, tm);
build(v << 1 | 1, tm + 1, tr);
t[v].merge(t[v << 1], t[v << 1 | 1]);
}
node get(int v, int tl, int tr, int l, int r) {
if (l > r) return {0, 0, 0, 0};
if (tl == l && tr == r) {
return t[v];
}
int tm = (tl + tr) >> 1;
node g1 = get(v << 1, tl, tm, l, min(tm, r));
node g2 = get(v << 1 | 1, tm + 1, tr, max(tm + 1, l), r);
node ans; ans.merge(g1, g2);
return ans;
}
} T;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(nullptr);
int n;
cin >> n;
for (int i = 1; i <= n; ++i) {
char c; cin >> c;
a[i] = (c == 'T' ? 1 : -1);
}
int q;
cin >> q;
T.build(1, 1, n);
for (int i = 0; i < q; ++i) {
int l, r;
cin >> l >> r;
cout << T.get(1, 1, n, l, r).ans << "\n";
}
return 0;
}