#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-10;
const int inf = 1 << 28;
template <class T>
void chmin(T &t, T f) {
  if (t > f) t = f;
}
template <class T>
void chmax(T &t, T f) {
  if (t < f) t = f;
}
int getint() {
  int x = 0, c;
  for (; (unsigned int)((c = getchar()) - '0') >= 10;) {
    if (c == '-') return -getint();
    if (!~c) exit(0);
  }
  do {
    x = (x << 3) + (x << 1) + (c - '0');
  } while ((unsigned int)((c = getchar()) - '0') < 10);
  return x;
}
long long getll() {
  long long x = 0;
  int c;
  for (; (unsigned int)((c = getchar()) - '0') >= 10;) {
    if (c == '-') return -getll();
    if (!~c) exit(0);
  }
  do {
    x = (x << 3) + (x << 1) + (c - '0');
  } while ((unsigned int)((c = getchar()) - '0') < 10);
  return x;
}
void rot_n(int d[]) {
  d[0] = d[1];
  d[1] = d[2];
  d[2] = d[6];
  d[6] = d[5];
  d[5] = d[0];
}
void rot_e(int d[]) {
  d[0] = d[1];
  d[1] = d[4];
  d[4] = d[6];
  d[6] = d[3];
  d[3] = d[0];
}
void rot_w(int d[]) {
  d[0] = d[1];
  d[1] = d[3];
  d[3] = d[6];
  d[6] = d[4];
  d[4] = d[0];
}
void rot_s(int d[]) {
  d[0] = d[1];
  d[1] = d[5];
  d[5] = d[6];
  d[6] = d[2];
  d[2] = d[0];
}
void rot_r(int d[]) {
  d[0] = d[2];
  d[2] = d[3];
  d[3] = d[5];
  d[5] = d[4];
  d[4] = d[0];
}
void rot_l(int d[]) {
  d[0] = d[2];
  d[2] = d[4];
  d[4] = d[5];
  d[5] = d[3];
  d[3] = d[0];
}
inline int gstate(int d[]) {
  if (d[1] == 1 && d[2] == 2 && d[3] == 3 && d[4] == 4 && d[5] == 5 &&
      d[6] == 6)
    return 0;
  if (d[1] == 1 && d[2] == 3 && d[3] == 5 && d[4] == 2 && d[5] == 4 &&
      d[6] == 6)
    return 1;
  if (d[1] == 1 && d[2] == 5 && d[3] == 4 && d[4] == 3 && d[5] == 2 &&
      d[6] == 6)
    return 2;
  if (d[1] == 1 && d[2] == 4 && d[3] == 2 && d[4] == 5 && d[5] == 3 &&
      d[6] == 6)
    return 3;
  if (d[1] == 2 && d[2] == 6 && d[3] == 3 && d[4] == 4 && d[5] == 1 &&
      d[6] == 5)
    return 4;
  if (d[1] == 2 && d[2] == 3 && d[3] == 1 && d[4] == 6 && d[5] == 4 &&
      d[6] == 5)
    return 5;
  if (d[1] == 2 && d[2] == 1 && d[3] == 4 && d[4] == 3 && d[5] == 6 &&
      d[6] == 5)
    return 6;
  if (d[1] == 2 && d[2] == 4 && d[3] == 6 && d[4] == 1 && d[5] == 3 &&
      d[6] == 5)
    return 7;
  if (d[1] == 5 && d[2] == 1 && d[3] == 3 && d[4] == 4 && d[5] == 6 &&
      d[6] == 2)
    return 8;
  if (d[1] == 5 && d[2] == 3 && d[3] == 6 && d[4] == 1 && d[5] == 4 &&
      d[6] == 2)
    return 9;
  if (d[1] == 5 && d[2] == 6 && d[3] == 4 && d[4] == 3 && d[5] == 1 &&
      d[6] == 2)
    return 10;
  if (d[1] == 5 && d[2] == 4 && d[3] == 1 && d[4] == 6 && d[5] == 3 &&
      d[6] == 2)
    return 11;
  if (d[1] == 4 && d[2] == 2 && d[3] == 1 && d[4] == 6 && d[5] == 5 &&
      d[6] == 3)
    return 12;
  if (d[1] == 4 && d[2] == 1 && d[3] == 5 && d[4] == 2 && d[5] == 6 &&
      d[6] == 3)
    return 13;
  if (d[1] == 4 && d[2] == 5 && d[3] == 6 && d[4] == 1 && d[5] == 2 &&
      d[6] == 3)
    return 14;
  if (d[1] == 4 && d[2] == 6 && d[3] == 2 && d[4] == 5 && d[5] == 1 &&
      d[6] == 3)
    return 15;
  if (d[1] == 3 && d[2] == 2 && d[3] == 6 && d[4] == 1 && d[5] == 5 &&
      d[6] == 4)
    return 16;
  if (d[1] == 3 && d[2] == 6 && d[3] == 5 && d[4] == 2 && d[5] == 1 &&
      d[6] == 4)
    return 17;
  if (d[1] == 3 && d[2] == 5 && d[3] == 1 && d[4] == 6 && d[5] == 2 &&
      d[6] == 4)
    return 18;
  if (d[1] == 3 && d[2] == 1 && d[3] == 2 && d[4] == 5 && d[5] == 6 &&
      d[6] == 4)
    return 19;
  if (d[1] == 6 && d[2] == 5 && d[3] == 3 && d[4] == 4 && d[5] == 2 &&
      d[6] == 1)
    return 20;
  if (d[1] == 6 && d[2] == 3 && d[3] == 2 && d[4] == 5 && d[5] == 4 &&
      d[6] == 1)
    return 21;
  if (d[1] == 6 && d[2] == 2 && d[3] == 4 && d[4] == 3 && d[5] == 5 &&
      d[6] == 1)
    return 22;
  if (d[1] == 6 && d[2] == 4 && d[3] == 5 && d[4] == 2 && d[5] == 3 &&
      d[6] == 1)
    return 23;
}
inline void rstate(int s, int d[]) {
  if (s == 0) d[1] = 1, d[2] = 2, d[3] = 3, d[4] = 4, d[5] = 5, d[6] = 6;
  if (s == 1) d[1] = 1, d[2] = 3, d[3] = 5, d[4] = 2, d[5] = 4, d[6] = 6;
  if (s == 2) d[1] = 1, d[2] = 5, d[3] = 4, d[4] = 3, d[5] = 2, d[6] = 6;
  if (s == 3) d[1] = 1, d[2] = 4, d[3] = 2, d[4] = 5, d[5] = 3, d[6] = 6;
  if (s == 4) d[1] = 2, d[2] = 6, d[3] = 3, d[4] = 4, d[5] = 1, d[6] = 5;
  if (s == 5) d[1] = 2, d[2] = 3, d[3] = 1, d[4] = 6, d[5] = 4, d[6] = 5;
  if (s == 6) d[1] = 2, d[2] = 1, d[3] = 4, d[4] = 3, d[5] = 6, d[6] = 5;
  if (s == 7) d[1] = 2, d[2] = 4, d[3] = 6, d[4] = 1, d[5] = 3, d[6] = 5;
  if (s == 8) d[1] = 5, d[2] = 1, d[3] = 3, d[4] = 4, d[5] = 6, d[6] = 2;
  if (s == 9) d[1] = 5, d[2] = 3, d[3] = 6, d[4] = 1, d[5] = 4, d[6] = 2;
  if (s == 10) d[1] = 5, d[2] = 6, d[3] = 4, d[4] = 3, d[5] = 1, d[6] = 2;
  if (s == 11) d[1] = 5, d[2] = 4, d[3] = 1, d[4] = 6, d[5] = 3, d[6] = 2;
  if (s == 12) d[1] = 4, d[2] = 2, d[3] = 1, d[4] = 6, d[5] = 5, d[6] = 3;
  if (s == 13) d[1] = 4, d[2] = 1, d[3] = 5, d[4] = 2, d[5] = 6, d[6] = 3;
  if (s == 14) d[1] = 4, d[2] = 5, d[3] = 6, d[4] = 1, d[5] = 2, d[6] = 3;
  if (s == 15) d[1] = 4, d[2] = 6, d[3] = 2, d[4] = 5, d[5] = 1, d[6] = 3;
  if (s == 16) d[1] = 3, d[2] = 2, d[3] = 6, d[4] = 1, d[5] = 5, d[6] = 4;
  if (s == 17) d[1] = 3, d[2] = 6, d[3] = 5, d[4] = 2, d[5] = 1, d[6] = 4;
  if (s == 18) d[1] = 3, d[2] = 5, d[3] = 1, d[4] = 6, d[5] = 2, d[6] = 4;
  if (s == 19) d[1] = 3, d[2] = 1, d[3] = 2, d[4] = 5, d[5] = 6, d[6] = 4;
  if (s == 20) d[1] = 6, d[2] = 5, d[3] = 3, d[4] = 4, d[5] = 2, d[6] = 1;
  if (s == 21) d[1] = 6, d[2] = 3, d[3] = 2, d[4] = 5, d[5] = 4, d[6] = 1;
  if (s == 22) d[1] = 6, d[2] = 2, d[3] = 4, d[4] = 3, d[5] = 5, d[6] = 1;
  if (s == 23) d[1] = 6, d[2] = 4, d[3] = 5, d[4] = 2, d[5] = 3, d[6] = 1;
}
int main() {
  int i, j, k, tcc;
  int tc = inf;
  string str;
  while (cin >> str) {
    set<vector<char> > st;
    sort((str).begin(), (str).end());
    vector<char> v(6);
    int dice[7];
    int res = 0;
    do {
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[i];
      if (st.count(v)) continue;
      res++;
      st.insert(v);
      for ((i) = (0); (i) < (int)(7); (i)++) dice[i] = i;
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      for ((i) = (0); (i) < (int)(7); (i)++) dice[i] = i;
      rot_n(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      for ((i) = (0); (i) < (int)(7); (i)++) dice[i] = i;
      rot_n(dice);
      rot_n(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      for ((i) = (0); (i) < (int)(7); (i)++) dice[i] = i;
      rot_s(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      for ((i) = (0); (i) < (int)(7); (i)++) dice[i] = i;
      rot_e(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      for ((i) = (0); (i) < (int)(7); (i)++) dice[i] = i;
      rot_w(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
      rot_r(dice);
      for ((i) = (0); (i) < (int)(6); (i)++) v[i] = str[dice[i + 1] - 1];
      st.insert(v);
    } while (next_permutation((str).begin(), (str).end()));
    cout << res << endl;
  }
  return 0;
}
