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 JAVA (judge verdict: Accepted)

import java.util.*;

class Main{

    char[] in;
    int p;

    void solve(){
        Scanner sc = new Scanner(System.in);

        in = sc.next().toCharArray();
        p = 0;

        boolean boo = cat();
        if(boo && p>=in.length) System.out.println("Cat");
        else System.out.println("Rabbit");
    }

    boolean cat(){
        if(p<in.length && in[p]=='m'){
            p++;
            if(p<in.length && in[p]!='e'){
                if(!cat()) return false;
            }
        }

        if(p<in.length && in[p]=='e'){
            p++;
            if(p<in.length && in[p]!='w'){
                if(!cat()) return false;
            }
        }
        
        if(p<in.length && in[p]=='w'){
            p++;
            return true;
        }
        return false;
    }

    public static void main(String[] args){
        new Main().solve();
    }
}