#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
char a[8][7];
int b[8],c[8],d[6][6]={};
int ff();
int fg();
int fh();
int fi();
int fj();
int fk();
int fm();
enum ea{
  NL,E,S,R,W,N,L,EE,SS,RR
};
void rd(char a[],int p){
  static int b[6][4]={
    {0,3,5,2},
    {0,4,5,1},
    {1,2,4,3},
    {0,2,5,3},
    {0,1,5,4},
    {1,3,4,2}
  };
  int i;
  if(p==EE||p==SS||p==RR){
    rd(a,p-6);
    rd(a,p-6);
  }else{
    char s=a[b[p-1][0]];
    for(i=0;i<3;++i)
      a[b[p-1][i]]=a[b[p-1][i+1]];
    a[b[p-1][i]]=s;
  }
  return;
}
void rd2(char a[],int p,int q,int r){
  int b[6][6]={
    {NL,S,E,W,N,(r==SS||r==EE)?r:SS},
    {N,NL,L,R,(r==SS||r==RR)?r:SS,S},
    {W,R,NL,(r==EE||r==RR)?r:EE,L,E},
    {E,L,(r==EE||r==RR)?r:EE,NL,R,W},
    {S,(r==SS||r==RR)?r:SS,R,L,NL,N},
    {(r==SS||r==EE)?r:SS,N,W,E,S,NL}
  };
  if(b[p][q])  
    rd(a,b[p][q]);
  return;
}
#define rf(p,q) strchr(a[i],'a'<=a[c[p]][q]&&a[c[p]][q]<='z'?a[c[p]][q]+'A'-'a':a[c[p]][q]+'a'-'A')
int fm(){
  int i,j;
  for(i=0;i<8;++i){
    char* p;
    if(b[i]&&(p=rf(0,2))!=NULL){
      b[i]=0;
      c[1]=i;
      rd2(a[i],p-a[i],3,SS);
      for(j=0;j<4;++j){
	if(fk())
	  return 1;
	rd(a[i],N);
      }
      b[i]=-1;
    }
  }
  return 0;
}
int fk(){
  int i,j;
  for(i=0;i<8;++i){
    char* p;
    if(b[i]&&(p=rf(0,4))!=NULL){
      b[i]=0;
      c[2]=i;
      rd2(a[i],p-a[i],1,SS);
      for(j=0;j<4;++j){
	if(fj())
	  return 1;
	rd(a[i],E);
      }
      b[i]=-1;
    }
  }
  return 0;
}
int fj(){
  int i;
  for(i=0;i<8;++i){
    char* p,* q;
    if(b[i]&&(p=rf(1,4))!=NULL&&(q=rf(2,2))!=NULL&&d[p-a[i]][q-a[i]]){
      b[i]=0;
      c[3]=i;
      rd2(a[i],p-a[i],1,SS);
      q=rf(2,2);
      rd2(a[i],q-a[i],3,EE);
      if(fi())
	return 1;
      b[i]=-1;
    }
  }
  return 0;
}
int fi(){
  int i,j;
  for(i=0;i<8;++i){
    char* p;
    if(b[i]&&(p=rf(0,0))!=NULL){
      b[i]=0;
      c[4]=i;
      rd2(a[i],p-a[i],5,SS);
      for(j=0;j<4;++j){
	if(fh())
	  return 1;
	rd(a[i],R);
      }
      b[i]=-1;
    }
  }
  return 0;
}
int fh(){
  int i;
  for(i=0;i<8;++i){
    char* p,* q;
    if(b[i]&&(p=rf(1,0))!=NULL&&(q=rf(4,2))!=NULL&&d[p-a[i]][q-a[i]]){
      b[i]=0;
      c[5]=i;
      rd2(a[i],p-a[i],5,SS);
      q=rf(4,2);
      rd2(a[i],q-a[i],3,RR);
      if(fg())
	return 1;
      b[i]=-1;
    }
  }
  return 0;
}
int fg(){
  int i;
  for(i=0;i<8;++i){
    char* p,* q;
    if(b[i]&&(p=rf(2,0))!=NULL&&(q=rf(4,4))!=NULL&&d[p-a[i]][q-a[i]]){
      b[i]=0;
      c[6]=i;
      rd2(a[i],p-a[i],5,SS);
      q=rf(4,4);
      rd2(a[i],q-a[i],1,RR);
      if(ff())
	return 1;
      b[i]=-1;
    }
  }
  return 0;
}
int ff(){
  int i;
  for(i=0;i<8;++i){
    char* p,* q,* r;
    if(b[i]&&(p=rf(3,0))!=NULL&&(q=rf(5,4))!=NULL&&(r=rf(6,2))!=NULL&&d[p-a[i]][q-a[i]]&&d[p-a[i]][r-a[i]]&&d[q-a[i]][r-a[i]]){
      b[i]=0;
      c[7]=i;
      rd2(a[i],p-a[i],5,SS);
      q=rf(5,4);
      rd2(a[i],q-a[i],1,RR);
      r=rf(6,2);
      if(r-a[i]==3)
	return 1;
      b[i]=-1;
    }
  }
  return 0;
}
int main(){
  int i,j;
  for(i=0;i<6;++i){
    for(j=0;j<6;++j){
      if(i!=j&&i+j!=5)
	d[i][j]=-1;
    }
  }
  while(cin>>a[0],a[0][0]!='0'){
    for(i=1;i<8;++i)
      cin>>a[i];
    memset(b,-1,sizeof(b));
    b[0]=0;
    c[0]=0;
    int e[24]={L,L,L,E,L,L,L,E,L,L,L,W,L,L,L,W,L,L,L,E,L,L,L,L};
    for(i=0;i<24;++i){
      if(fm())
	break;
      rd(a[0],e[i]);
    }
    if(i<24)
      cout<<"YES"<<endl;
    else
      cout<<"NO"<<endl;
  }
  return 0;
}