use std::collections::HashSet; fn dfs(s: &mut Vec, result: &mut HashSet, sidx: usize, eidx: usize, orgs: &str) { if sidx == eidx { result.insert(s.iter().map(|c| c.to_string()).collect::>().join("")); return; } s.push(orgs.chars().nth(sidx).unwrap()); dfs(s, result, sidx+1, eidx, orgs); s.pop(); s.push(orgs.chars().nth(eidx).unwrap()); dfs(s, result, sidx, eidx-1, orgs); s.pop(); } fn main() { let mut s = String::new(); std::io::stdin().read_line(&mut s).ok(); let s: &str = s.trim(); let mut result: HashSet = HashSet::new(); let mut sc: Vec = vec![]; dfs(&mut sc, &mut result, 0, s.len()-1, s); println!("{}", result.len()); }