18/11/25 12:38:51.26 YCGD2W4D.net
>>703 Ruby
h = -> c {'qaz'[c] ? 1 : 'wsx'[c] ? 2 : 'edc'[c] ? 3 : 'rfvtgb'[c] ? 4 : 'yhnujm'[c] ? -4 : 'ik'[c] ? -3 : 'ol'[c] ? -2 : 'p'[c] ? -1 : raise('invalid key')}
f = -> str{(str[/\A[adfghjkls]/] ? 4 : 5) + str.each_char.map{|c| h[c]}.each_cons(2).map{|a, b| a * b < 0 ? 1 : a != b ? 2 : 3}.sum}
%w[aiueo odai pppp asdfjkl fjdksla].each{|s| puts '%s => %d' % [s, f[s]]}
# => aiueo => 9
odai => 9
pppp => 14
asdfjkl => 15
fjdksla => 10