replacements, molecule = DATA.read.chomp.split("\n\n")
replacements = replacements.scan(/(\w+) \=> (\w+)/).map(&:reverse).sort_by {|k,_| -k.size}
steps = 0
until molecule == ?e
k,v = replacements.find {|k,_| molecule.include?(k) }
steps += molecule.scan(/#{k}/).size
molecule.gsub!(k, v)
puts "#{steps}: #{molecule}"
end
__END__