fp.cpp
#include <cstdio>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <limits.h>
#include <map>
#include <queue>
#include <vector>
#include <set>
#include <stack>
#include <bitset>
#include <string>
#include <cstdlib>
using namespace std;
typedef pair<int,int> ii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef set<int> si;
typedef set<ii> sii;
#define MP make_pair
#define PB push_back
#define REP(i,a) for ( int i = 0; i < int(a); i++)
#define FOR(i,a,b) for ( int i = int(a); i<=int(b); i++)
#define FORD(i,a,b) for(int i= int(a); i>=int(b); i--)
const int INF = 1<<29;
typedef long long int ll;
bool solve(char a, char b, char c, char d){
if ( a == b && b ==c && c ==d)
return true;
if ( a == b && b == 'I' && c == d && d == 'P')
return true;
if ( a == b && b == 'P' && c == d && d == 'I')
return true;
if ( a == 'F' && b == 'W' && c == 'I' && d == 'I')
return false;
if ( a == b && b == 'I' && c == 'F' && d == 'W')
return false;
if ( a == 'V' && b == 'Z' && c == 'P' && d == 'U')
return true;
if ( a == 'P' && b == 'U' && c == 'V' && d == 'Z')
return true;
return rand()%2;
}
int main(){
char a,b,c,d;
srand(42);
while ( scanf(" %c%c %c%c", &a, &b, &c, &d) == 4 ) {
if ( solve ( min(a,b), max(a,b), min(c,d), max(c,d) ) )
printf("YES\n");
else
printf("NO\n");
}
return 0;
}