#include <bits/stdc++.h>
using namespace std;
int main() {
/* how many LC Subsequence are there in a string .We will count the number of L ending at index i
if s[i]=="C" , this will give us total number of LC subsequence.
*/
string s="LCCTLLCT";
int n=s.size();
vector<int> pre(n+1,0);
vector<int> suf(n+1,0);
int count1=0 , count2=0;
for(int i=0;i<n;i++){
if(s[i]=='L'){
count++;
}
pre[i]=count;
}
for(int i=n;i>=0;i--){
if(s[i]=='T'){
count++;
}
suf[i]=count;
}
int count=0;
unordered_map<string,int> ok;
for(int i=0;i<s.size();i++){ /* ye to humne sidhe order main insert karwaya*/
if(s[i]=='C'){
ok["LC"]+=ok["L"];
}else if(s[i]=='L'){
ok["L"]++;
}else if(s[i]=='T'){
ok["LCT"]+=ok["LC"];
}
}
int anst=ok["LCT"]+ok["LC"];
cout<<ok["LCT"];
// what if mujhe piche se(backwards) se padhna ho to
unordered_map<string,int> ok;
for(int i=n-1;i>=0;i--){
if(s[i]=='T'){
ok["T"]++;
}else if(s[i]=='C'){
ok["CT"]+=ok["T"];
}else if(s[i]=='L'){
ok["LCT"]+=ok["CT"];
}
}
int ansl=ok["LCT"]+ok["CT"];
cout<<ok["LCT"];
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCS8qIGhvdyBtYW55IExDIFN1YnNlcXVlbmNlIGFyZSB0aGVyZSBpbiBhIHN0cmluZyAuV2Ugd2lsbCBjb3VudCB0aGUgbnVtYmVyIG9mIEwgZW5kaW5nIGF0IGluZGV4IGkgCglpZiBzW2ldPT0iQyIgLCB0aGlzIHdpbGwgZ2l2ZSB1cyB0b3RhbCBudW1iZXIgb2YgTEMgc3Vic2VxdWVuY2UuCgkqLwoJCglzdHJpbmcgcz0iTENDVExMQ1QiOwoJaW50IG49cy5zaXplKCk7Cgl2ZWN0b3I8aW50PiBwcmUobisxLDApOwoJdmVjdG9yPGludD4gc3VmKG4rMSwwKTsKCWludCBjb3VudDE9MCAsIGNvdW50Mj0wOwoJZm9yKGludCBpPTA7aTxuO2krKyl7CgkJaWYoc1tpXT09J0wnKXsKCQkJY291bnQrKzsKCQl9CgkJcHJlW2ldPWNvdW50OwoJfQoJZm9yKGludCBpPW47aT49MDtpLS0pewoJCWlmKHNbaV09PSdUJyl7CgkJCWNvdW50Kys7CgkJfQoJCXN1ZltpXT1jb3VudDsKCX0KCQoKCWludCBjb3VudD0wOwoJdW5vcmRlcmVkX21hcDxzdHJpbmcsaW50PiBvazsKCWZvcihpbnQgaT0wO2k8cy5zaXplKCk7aSsrKXsgICAgLyogeWUgdG8gaHVtbmUgc2lkaGUgb3JkZXIgbWFpbiBpbnNlcnQga2Fyd2F5YSovCgkJaWYoc1tpXT09J0MnKXsKCQkJb2tbIkxDIl0rPW9rWyJMIl07CgkJfWVsc2UgaWYoc1tpXT09J0wnKXsKCQkJb2tbIkwiXSsrOwoJCX1lbHNlIGlmKHNbaV09PSdUJyl7CgkJCW9rWyJMQ1QiXSs9b2tbIkxDIl07CgkJfQoJfQoJaW50IGFuc3Q9b2tbIkxDVCJdK29rWyJMQyJdOwoJY291dDw8b2tbIkxDVCJdOwoJCgkKCQoJCgkvLyB3aGF0IGlmIG11amhlIHBpY2hlIHNlKGJhY2t3YXJkcykgc2UgcGFkaG5hIGhvIHRvCgl1bm9yZGVyZWRfbWFwPHN0cmluZyxpbnQ+IG9rOwoJZm9yKGludCBpPW4tMTtpPj0wO2ktLSl7ICAgIAoJCWlmKHNbaV09PSdUJyl7CgkJCW9rWyJUIl0rKzsKCQl9ZWxzZSBpZihzW2ldPT0nQycpewoJCQlva1siQ1QiXSs9b2tbIlQiXTsKCQl9ZWxzZSBpZihzW2ldPT0nTCcpewoJCQlva1siTENUIl0rPW9rWyJDVCJdOwoJCX0KCX0KCWludCBhbnNsPW9rWyJMQ1QiXStva1siQ1QiXTsKCWNvdXQ8PG9rWyJMQ1QiXTsKCQoJCgkKCQoJcmV0dXJuIDA7Cn0=