#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:100000000")
using namespace std;
int n;
string s;
string A[] = {"123456", "154236", "145326", "516324", "261453", "132546"};
string B[] = {"123456", "523164", "623541", "423615"};
vector<string> P;
vector<string> T;
vector<string> H;
bool BB[1000];
bool F(string a, string b) {
  for (long long(i) = (0); (i) < (T.size()); ++(i)) {
    string t = a;
    for (long long(j) = (0); (j) < (6); ++(j)) t[j] = a[T[i][j] - '0'];
    if (t == b) return true;
  }
  return false;
}
int main() {
  cin >> s;
  int Q[6];
  for (long long(i) = (0); (i) < (6); ++(i)) Q[i] = i;
  do {
    string p = "";
    for (long long(i) = (0); (i) < (6); ++(i)) p += char('0' + Q[i]);
    P.push_back(p);
  } while (next_permutation(Q, Q + 6));
  for (long long(i) = (0); (i) < (6); ++(i))
    for (long long(j) = (0); (j) < (4); ++(j)) {
      string t = A[i];
      string p = t;
      for (long long(k) = (0); (k) < (6); ++(k)) {
        int x = B[j][k] - '0';
        x--;
        p[k] = t[x];
        p[k]--;
      }
      T.push_back(p);
    }
  for (long long(i) = (0); (i) < (P.size()); ++(i)) {
    string t = "";
    for (long long(j) = (0); (j) < (6); ++(j)) t += s[P[i][j] - '0'];
    H.push_back(t);
  }
  int res = 0;
  for (long long(i) = (0); (i) < (H.size()); ++(i))
    if (BB[i] == false) {
      res++;
      for (long long(j) = (i + 1); (j) < (H.size()); ++(j))
        if (F(H[i], H[j])) BB[j] = true;
    }
  cout << res << endl;
  return 0;
}
