words = ARGF.read.scan(/[A-Za-z]+/).uniq.sort

このように書くと、マッチした文字列を読み込み重複削除し並び替えたものが配列wordに入るんですよね?
+/)以降を書かない場合は、マッチした文字列を読み込んだだけのものが配列wordに入るでいいんですよね。