#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>
#include <utility>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
 
using namespace std;
 
#define rep(i,n) for(int i=0; i<(n); i++)
#define repc(i,s,e) for(int i=(s); i<(e); i++)
#define pb(n) push_back((n))
#define mp(n,m) make_pair((n),(m))
#define all(r) r.begin(),r.end()
#define fi first
#define se second
 
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vii;
typedef vector<ll> vl;
typedef vector<vl> vll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
 
 
const int INF = 10000000;

int dx[]={-1,0,1,0};
int dy[]={0,-1,0,1};
char c[3][3];
string s;
bool f;

void calc(int x, int y, int n){
	if(n == s.size() || f) {
		f = true;
		return ;
	}
	for(int i = 0; i < 4; i++){
		int nx = x + dx[i], ny = y + dy[i];
		if(nx >= 0 && nx < 3 && ny >= 0 && ny < 3){
			if(c[nx][ny] == s[n]){
				//cout<<s[n]<<endl;
				calc(nx, ny, n + 1);
			}
		}
	}
}

int main(){
	for(int i = 0; i < 3; i++){
		for(int j = 0; j < 3; j++){
			c[i][j] = 'A' + i * 3 + j;
		}
	}
	// for(int i = 0; i < 3; i++){
	// 	for(int j = 0; j < 3; j++){
	// 		cout<<c[i][j];
	// 	}
	// 	cout<<endl;
	// }
	while(cin>>s){
		f = false;
		calc((s[0]-'A')/3, (s[0]-'A')%3, 1);
		if(f) cout<<s<<endl;
	}
}