#include<bits/stdc++.h>
using namespace std;
typedef vector<int> Vec;
void rotatex(Vec &a){
  int tmp;
  tmp=a[0];a[0]=a[1];a[1]=a[2];a[2]=a[3];a[3]=tmp;
  tmp=a[4];a[4]=a[5];a[5]=a[6];a[6]=a[7];a[7]=tmp;
}

void rotatey(Vec &a){
  int tmp;
  tmp=a[0];a[0]=a[1];a[1]=a[5];a[5]=a[4];a[4]=tmp;
  tmp=a[3];a[3]=a[2];a[2]=a[6];a[6]=a[7];a[7]=tmp;
}

void rotatez(Vec &a){
  int tmp;
  tmp=a[0];a[0]=a[4];a[4]=a[7];a[7]=a[3];a[3]=tmp;
  tmp=a[1];a[1]=a[5];a[5]=a[6];a[6]=a[2];a[2]=tmp;
}

int main(){
  string s[8];
  set<Vec> sv;
  map<Vec,bool> mv;
  while(cin>>s[0]){
    int i,j,k,ans=0;
    sv.clear();mv.clear();
    for(i=1;i<8;i++) cin>>s[i];
    sort(s,s+8);
    set<string> ss;
    Vec v;
    for(i=0;i<8;i++) ss.insert(s[i]),v.push_back(ss.size()-1);
    do{
      if(sv.find(v)!=sv.end()) continue;
      ans++;
      for(i=0;i<4;i++){
	rotatez(v);
	for(j=0;j<4;j++){
	  rotatey(v);
	  for(k=0;k<4;k++){
	    rotatex(v);
	    sv.insert(v);
	  }
	}
      }
    }while(next_permutation(v.begin(),v.end()));
    cout << ans << endl;
  }
  return 0;
}