use proconio::{input, marker::Chars}; fn main() { input! { n: usize, m: usize, curves: [Chars; n], } let mut ans = 0; for curve in curves { let mut y = 0; let mut x = 0; let mut cross = vec![]; for c in curve { let (ny, nx) = match c { 'U' => (y + 1, x), 'D' => (y - 1, x), 'L' => (y, x - 1), 'R' => (y, x + 1), _ => unreachable!() }; if nx >= 0 && (y, ny) == (1, 0) { if cross.last() == Some(&(false, false)) { cross.pop(); } else { cross.push((false, true)); } } if nx >= 1 && (y, ny) == (0, 1) { if cross.last() == Some(&(true, false)) { cross.pop(); } else { cross.push((true, true)); } } if nx >= 1 && (y, ny) == (1, 0) { if cross.last() == Some(&(true, true)) { cross.pop(); } else { cross.push((true, false)); } } if nx >= 0 && (y, ny) == (0, 1) { if cross.last() == Some(&(false, true)) { cross.pop(); } else { cross.push((false, false)); } } x = nx; y = ny; } if cross.is_empty() { ans += 1; } } println!("{ans}"); }