Problem:
MathJax.Hub.Config({ tex2jax: { inlineMath: [["$","$"], ["\\(","\\)"]], processEscapes: true }});

Problem A:
CatChecker

外見からねこかどうかわからない動物がいる. あなたは, 鳴き声がねこの鳴き声であればねこであり, そうでなければうさぎであると判定することにした.

ねこの鳴き声は次のように定義される.

"" (empty string) はねこの鳴き声である.

$X$, $Y$ がねこの鳴き声であれば 'm' + $X$ + 'e' + $Y$ + 'w' は猫の鳴き声である. ただし + は文字列の連結を表す.

以上で定義されるものだけがねこの鳴き声である.

BNF で表すとねこの鳴き声 $CAT$ は

$CAT$ := "" (empty string) $|$ 'm' + $CAT$ + 'e' + $CAT$ + 'w'

と定義される.

鳴き声を表す文字列 $S$ が与えられる. 鳴き声から動物が何であるか判定せよ.

Constraints

$S$ will contain between 1 and 500 characters, inclusive. Each character in $S$ will be 'm', 'e' or 'w'.

Input

入力は以下の形式で与えられる:

$S$

Output

$S$ が猫の鳴き声であれば "Cat", そうでなければ "Rabbit" と1 行に出力せよ.

Sample Input 1

mmemewwemeww

Sample Output 1

Cat

Sample Input 2

mewmew

Sample Output 2

Rabbit

Solution in Ruby (judge verdict: Accepted)

$h = Hash.new(false)
def solve(s)
    return true if s == "" || s == "mew"
    return $h[s] if $h.has_key?(s)
    return false if s[0] != "m" || s[s.length - 1] != "w"
    t = s[1...(s.length - 1)]
    if !t.index("e")
        $h[s] = false
        return false
    end
    t.each_char.with_index do |c, i|
        next if c != "e"
        if solve(t[0...i]) && solve(t[(i+1)...t.length])
            $h[s] = true
            return true
        end
    end
    $h[s] = false
    return false
end
s = gets.chomp
puts solve(s) ? "Cat" : "Rabbit"