puts "You have " + first.length.to_s + middle.length.to_s + last.length.to_s + " letters in your name."
first.length равно 4 (число), потому что "john" имеет 4 буквы.
first.length.to_s - «4» (строка), потому что вы превратили число в строку - слишком рано.
В остальной части вашего кода вы «добавляете» две другие строки, чтобы получить «455»
4 + 5 = 9 # what you want
"4" + "5" = "45" # what you got