pub fn encode(input: &str, key: &str) -> String {
let mut encoded_chars: Vec<char> = input.chars()
.enumerate()
.map(|(i, c)| {
let shift = key.chars().nth(i % key.len()).unwrap_or('a') as u8;
((c as u8).wrapping_add(shift)) as char
})
.collect();
encoded_chars.reverse(); encoded_chars.into_iter().collect()
}