F题 n^2做法
前后缀分解dp这5个状态即可
怪不得我做的这么慢,原来是我没仔细看数据范围

#o   0
#v   1
#ov  2
#vo  3
#ovo 4


t=ii()
for _ in range(t):
    s=input()
    n=len(s)
    pre=[[0]*5 for _ in range(n)]
    for i in range(n):
        if s[i]=="v":
            pre[i][1]=1
        else:
            pre[i][0]=1
        if i>0:
            for j in range(5):
                pre[i][j]+=pre[i-1][j] 
            if s[i]=="v":
                pre[i][2]+=pre[i-1][0]  #o+v -> ov
            else:
                pre[i][3]+=pre[i-1][1]  #v+o -> vo
                pre[i][4]+=pre[i-1][2]  #ov+o -> ovo
    suf=[[0]*5 for _ in range(n)]
    for i in range(n-1,-1,-1):
        if s[i]=="v":
            suf[i][1]=1
        else:
            suf[i][0]=1
        if i<n-1:
            for j in range(5):
                suf[i][j]+=suf[i+1][j]
            if s[i]=="v":               #注意后缀要反过来,当前的字符是拼前面的
                suf[i][3]+=suf[i+1][0]  #  vo <- v+o 
            else:
                suf[i][2]+=suf[i+1][1]  #  ov   <- o+v
                suf[i][4]+=suf[i+1][3]  #  ovo  <- o+vo        
    res=0
    for i in range(n):
        f=[0,0,0,0,0]
        for j in range(i,n):
            if s[j]=="o":
                f[0]+=1
                f[3]+=f[1]
                f[4]+=f[2]
            else:
                f[1]+=1
                f[2]+=f[0]
            x=pre[i-1] if i>0 else [0]*5
            y=suf[j+1] if j<n-1 else [0]*5
            ans=f[4]+x[4]+y[4]     # ovo
            ans+=x[0]*f[1]*y[0]    # o + v + o -> ovo
            ans+=x[2]*f[0]+x[2]*y[0]+f[2]*y[0] # ov + o -> ovo
            ans+=x[0]*f[3]+x[0]*y[3]+f[0]*y[3] # o + vo -> ovo
            res=max(res,ans)
    print(res)