what is the difference between `print` and `puts`? Does `gets` not work with `puts`?