def count s,c if u=s[0] k=[H[u],count(s[1..-1],(u.ord-1).chr)].min (u.succ..c).inject(0){|t,r|t+H[r]}+k+(H[u]-k)/2 else (?a..c).inject(0){|t,r|t+H[r]} end end gets H=Hash[gets.chars.group_by{|c|c}.map{|k,v|[k,v.size]}] H.default=0 p count("yuki",?z)