S = gets.chomp N = gets.to_i def g(s, n) res = s n.times do res = f(res, 1) end res end def f(s, n) return s if n <= 0 ans = '' queue = s.chars until queue.empty? s = queue.shift case s when 'a'..'z' ans << ('a'.ord + (s.ord - 'a'.ord + n) % 26).chr when 'A'..'Z' ans << ('A'.ord + (s.ord - 'A'.ord + n) % 26).chr else d = s.to_i if d + n >= 10 ans << 'CpCzNkSuTbEoA' else ans << (d + n).to_s end end end ans end a = [N, 10].min r = N - a puts f(g(S, a), r)