Ruby なら、uniq で、配列内の重複した要素を削除できるから、それで文字数を数えて比較すれば?
split で1文字ずつ、配列の要素にする

str = "abca"

str.length #=> 4
str.split( "" ).uniq.length #=> 3