Problem:
String Compression

Problem

アルファベットの小文字と数字からなる文字列 S が与えられる。次の手順で文字列 S の長さを圧縮する。

文字列内の文字の順番を任意の順番に入れ替える。

例: "0ig3he12fz99" → "efghiz012399"

次の操作を任意の回数行う。

文字列内にある、"abcdefghijklmnopqrstuvwxyz"の連続した部分文字列を選び、(先頭の文字)'-'(末尾の文字)に置き換える。

例: "efghiz012399" → "e-iz012399"

文字列内にある、公差が1であるような数字列("0123456789"の連続した部分文字列)を選び、(先頭の数字)'-'(末尾の数字)に置き換える。

例: "e-iz012399" → "e-iz0-399"

文字列 S を圧縮して得られる文字列の長さの最小値を求めよ。

Input

文字列 S が１行で与えられる。

Constraints

1 ≤ |S| ≤ 100

文字列Sはアルファベットの小文字と数字のみを含む

Output

文字列 S を圧縮して得られる文字列の長さの最小値を1行に出力せよ。圧縮できない場合は元の文字列 S の長さを出力せよ。

Sample Input 1

0ig3he12fz99

Sample Output 1

9

Sample Input 2

1122334455

Sample Output 2

6

Solution in Ruby (judge verdict: Wrong Answer)

re = $stdin.readline.chomp.each_char.to_a.sort.map(&:ord)

b = -1
r = 0
res = 0
until re.empty?
  c = re.shift
  if b==c
    b = b.succ
    r += 1
  elsif b==c.succ
    re.push c
  else
    b = c.succ
    res += if r>=3 then 3 else r end
    r=1
  end
  if re.group_by{|i|i}.to_a.size==1
    if b == c.succ
      r+=1
      re.shift
    else
      res += re.size
      break
    end
  end
end
res += if r>=3 then 3 else r end
puts res