#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;

void spinface(vector<string> &a){
    swap(a[0], a[1]);
    swap(a[1], a[2]);
    swap(a[2], a[3]);
    swap(a[4], a[5]);
    swap(a[5], a[6]);
    swap(a[6], a[7]);
}

void spindiag(vector<string> &a){
    swap(a[1], a[3]);
    swap(a[3], a[4]);
    swap(a[2], a[7]);
    swap(a[7], a[5]);
}

void turnupdown(vector<string> &a){
    swap(a[0], a[4]);
    swap(a[1], a[7]);
    swap(a[2], a[6]);
    swap(a[3], a[5]);
}

int main(){
    vector<string> s(8);
    while(cin >> s[0]){
        for(int i=1; i<8; i++) cin >> s[i];
        map<vector<string> ,bool> cases;
        sort(s.begin(), s.end());
        do{
            bool used = false;
            for(int i=0; i<8; i++){
                for(int j=0; j<3; j++){
                    if(cases.count(s)!=0){
                        used = true;
                    }
                    spindiag(s);
                }
                spinface(s);
                if(i%4==3){
                    turnupdown(s);
                }
            }
            if(!used){
                cases[s] = true;
            }
        }while(next_permutation(s.begin(), s.end()));
        cout << cases.size() << endl;
    }
    return 0;
}

