use proconio::{input, marker::Chars}; fn main() { input! { s: Chars, } let mut ans = 0; let mut cnt_m = 0; for c in s { if c == 'M' { cnt_m += 1; } else { let val = mod_pow(3, cnt_m); ans = mod_add(ans, val); } } println!("{}", ans); } const MOD : usize = 998244353; #[allow(unused)] fn mod_add(a: usize, b: usize) -> usize { let a = a % MOD; let b = b % MOD; (a + b) % MOD } #[allow(unused)] fn mod_sub(a: usize, b: usize) -> usize { let a = a % MOD; let b = b % MOD; (a + MOD - b) % MOD } #[allow(unused)] fn mod_mul(a: usize, b: usize) -> usize { let a = a % MOD; let b = b % MOD; (a * b) % MOD } #[allow(unused)] fn mod_div(a: usize, b: usize) -> usize { mod_mul(a, mod_pow(b, MOD-2)) } #[allow(unused)] fn mod_pow(mut a: usize, mut b: usize) -> usize { let mut ret = 1; while b > 0 { if b % 2 == 1 { ret = mod_mul(ret, a); } a = mod_mul(a, a); b /= 2; } ret }