#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
#include<set>
using namespace std;
string s;
int main()
{
	while(cin>>s)
	{
		vector<int>a;
		map<string,int>M;int sz=1;
		M[s]=sz++;
		a.push_back(1);
		for(int i=1;i<8;i++)
		{
			cin>>s;
			if(M[s]==0)M[s]=sz++;
			a.push_back(M[s]);
		}
		sort(a.begin(),a.end());
		vector<int>ret;
		set<int>S;
		do{
			int now=0;
			for(int i=0;i<8;i++)now=now*10+a[i];
			if(S.find(now)==S.end())
			{
				ret.push_back(now);
				int b=now;
				for(int i=0;i<2;i++)
				{
					for(int j=0;j<4;j++)
					{
						for(int k=0;k<4;k++)
						{
							S.insert(b);
							b=b/10000%1000*10*10000+b/10000000*10000+b%1000*10+b/1000%10;
						}
						b=b/10000%10*10000000+b/100000%10*1000000+b/10%10*100000+b%10*10000+b/10000000*1000+b/1000000%10*100+b/100%10*10+b/1000%10;
					}
					b=b/10000%1000*10*10000+b/10000000*10000+b%1000*10+b/1000%10;
				}
			}
		}while(next_permutation(a.begin(),a.end()));
		cout<<ret.size()<<endl;
	}
}

