#include <bits/stdc++.h>
using namespace std;
#define FOR(i,k,n) for(int i = (k); i < (n); i++)
#define REP(i,n) FOR(i,0,n)
#define INF 114514810
#define MOD 1000000007
#define ALL(a) (a).begin(),(a).end()
#define ms(m,v) memset(m,v,sizeof(m))
#define D10  fixed<<setprecision(10) 
typedef vector<int> vi;
typedef vector<string> vs;
typedef pair<int, int> P;
typedef long long ll;
struct edge{ int from, to, cost; };

string s;

int main()
{
	cin >> s;
	bool f = true;
	if (s[0] == 'm') s.erase(0, 1);
	else f = false;
	if (s[s.size() - 1] == 'w') s.erase(s.size() - 1, 1);
	else f = false;

	while (1)
	{
		if (s == "e") break;
		else
		{
			if (s.find("mew") != -1)
			{
				int i = s.find("mew");
				s.erase(i, 3);
			}
			else
			{
				f = false;
				break;
			}
		}
	}
	if (f) cout << "Cat" << endl;
	else cout << "Rabbit" << endl;
	return 0;
}
### Prompt

Develop a solution in CPP to the problem described below:

Example

Input

mmemewwemeww


Output

Cat

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
#define FOR(i,k,n) for(int i = (k); i < (n); i++)
#define REP(i,n) FOR(i,0,n)
#define INF 114514810
#define MOD 1000000007
#define ALL(a) (a).begin(),(a).end()
#define ms(m,v) memset(m,v,sizeof(m))
#define D10  fixed<<setprecision(10) 
typedef vector<int> vi;
typedef vector<string> vs;
typedef pair<int, int> P;
typedef long long ll;
struct edge{ int from, to, cost; };

string s;

int main()
{
	cin >> s;
	bool f = true;
	if (s[0] == 'm') s.erase(0, 1);
	else f = false;
	if (s[s.size() - 1] == 'w') s.erase(s.size() - 1, 1);
	else f = false;

	while (1)
	{
		if (s == "e") break;
		else
		{
			if (s.find("mew") != -1)
			{
				int i = s.find("mew");
				s.erase(i, 3);
			}
			else
			{
				f = false;
				break;
			}
		}
	}
	if (f) cout << "Cat" << endl;
	else cout << "Rabbit" << endl;
	return 0;
}
```