#include using namespace std; #define MAX 110000 long long n, q, a, b; string s; struct op { long long val = 0, l = 0 , r = 0; } tr[MAX * 4]; void build(int node, int l, int r) { if(l == r) { if(s[l - 1] == 'L')tr[node].l++; else tr[node].r++; return ; } int mid = (l + r) / 2; build(node * 2, l, mid); build(node * 2 + 1, mid + 1, r); tr[node].val = tr[node * 2].val + tr[node * 2 + 1].val + tr[node * 2].r * tr[node * 2 + 1].l; tr[node].l = tr[node * 2].l + tr[node * 2 + 1].l; tr[node].r = tr[node * 2].r + tr[node * 2 + 1].r; return; } op query(int node, int l, int r, int ql, int qr) { if(ql <= l && r <= qr)return tr[node]; op tmp; if(l > qr || r < ql)return tmp; int mid = (l + r) / 2; op lt = query(node * 2, l, mid, ql, qr); op rt = query(node * 2 + 1, mid + 1, r, ql, qr); tmp.val = lt.val + rt.val + lt.r * rt.l; tmp.l = lt.l + rt.l; tmp.r = lt.r + rt.r; return tmp; } int main() { freopen("bros.in", "r", stdin); freopen("bros.out", "w", stdout); ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> s; n = s.size(); build(1, 1, n); cin >> q; for(int i = 0; i < q; i ++) { cin >> a >> b; cout << query(1, 1, n, a, b).val << endl; } return 0; }