#include <bits/stdc++.h>
using namespace std;
char s[10];
string str[1000];
int vis[1000];
struct cube {
  char v1, v2, v3, v4, v5, v6;
  cube(string str) {
    v1 = str[0];
    v2 = str[1];
    v3 = str[2];
    v4 = str[3];
    v5 = str[4];
    v6 = str[5];
  }
  bool same(cube t) {
    return v1 == t.v1 && v2 == t.v2 && v3 == t.v3 && v4 == t.v4 && v5 == t.v5 &&
           v6 == t.v6;
  }
  cube() {}
  cube left() {
    cube ret;
    ret.v1 = v2;
    ret.v2 = v3;
    ret.v3 = v4;
    ret.v4 = v1;
    ret.v5 = v5;
    ret.v6 = v6;
    return ret;
  }
  cube up() {
    cube ret;
    ret.v1 = v6;
    ret.v2 = v2;
    ret.v3 = v5;
    ret.v4 = v4;
    ret.v5 = v1;
    ret.v6 = v3;
    return ret;
  }
};
bool same(string a, string b) {
  cube ca(a);
  cube cb(b);
  cube tc;
  tc = ca;
  for (int i = 0; i < 4; i++) {
    if (tc.same(cb)) return true;
    tc = tc.left();
  }
  tc.v5 = ca.v6;
  tc.v6 = ca.v5;
  tc.v1 = ca.v4;
  tc.v2 = ca.v3;
  tc.v3 = ca.v2;
  tc.v4 = ca.v1;
  for (int i = 0; i < 4; i++) {
    if (tc.same(cb)) return true;
    tc = tc.left();
  }
  tc.v5 = ca.v1;
  tc.v6 = ca.v3;
  tc.v1 = ca.v6;
  tc.v2 = ca.v2;
  tc.v3 = ca.v5;
  tc.v4 = ca.v4;
  for (int i = 0; i < 4; i++) {
    if (tc.same(cb)) return true;
    tc = tc.left();
  }
  tc.v5 = ca.v2;
  tc.v6 = ca.v4;
  tc.v1 = ca.v5;
  tc.v2 = ca.v1;
  tc.v3 = ca.v6;
  tc.v4 = ca.v3;
  for (int i = 0; i < 4; i++) {
    if (tc.same(cb)) return true;
    tc = tc.left();
  }
  tc.v5 = ca.v3;
  tc.v6 = ca.v1;
  tc.v1 = ca.v5;
  tc.v2 = ca.v2;
  tc.v3 = ca.v6;
  tc.v4 = ca.v4;
  for (int i = 0; i < 4; i++) {
    if (tc.same(cb)) return true;
    tc = tc.left();
  }
  tc.v5 = ca.v4;
  tc.v6 = ca.v2;
  tc.v1 = ca.v1;
  tc.v2 = ca.v5;
  tc.v3 = ca.v3;
  tc.v4 = ca.v6;
  for (int i = 0; i < 4; i++) {
    if (tc.same(cb)) return true;
    tc = tc.left();
  }
  return false;
}
int main() {
  scanf("%s", s);
  sort(s, s + 6);
  s[6] = 0;
  int c = 0;
  do {
    vis[c] = 0;
    str[c++] = string(s);
  } while (next_permutation(s, s + 6));
  int ans = 0;
  for (int i = 0; i < c; i++) {
    if (vis[i]) continue;
    ans++;
    for (int j = 0; j < c; j++) {
      if (i == j || same(str[i], str[j])) vis[j] = 1;
    }
  }
  printf("%d\n", ans);
  return 0;
}
