use std::collections::HashSet; use std::io::*; fn rec(l: usize, r: usize, chs: &mut Vec, s: &Vec, st: &mut HashSet) { if l == r { let tmp = chs.clone(); let t: String = tmp.into_iter().collect(); st.insert(t + &s[l].to_string()); } else { chs.push(s[l]); rec(l + 1, r, chs, &s, st); chs.pop(); chs.push(s[r]); rec(l, r - 1, chs, &s, st); chs.pop(); } } fn main() { let mut s: String = String::new(); std::io::stdin().read_to_string(&mut s).ok(); let s: Vec = s.trim().chars().collect(); let mut st = HashSet::new(); rec(0, s.len() - 1, &mut Vec::new(), &s, &mut st); println!("{}", st.len()); }