#! /usr/bin/perl -w
#

sub convert {
    my ($val, $base, $len) = @_;

    my @res;
    
    for(my $pos = 0; $pos < $len; $pos++){
	my $digit = $val % $base;

	push @res, $digit;
	$val = ($val - $digit) / $base;
    }

    return \@res;
}

MAIN : {
    my ($idx2, $idx3, $d2, $d3);

    my %orbits;
    
    for(my $idx2 = 0; $idx2 < 2**6; $idx2++){
	$d2 = convert $idx2, 2, 6;
	for(my $idx3 = 0; $idx3 < 3**6; $idx3++){
	    $d3 = convert $idx3, 3, 6;

	    my @interl;

	    for(my $pos = 0; $pos < 6; $pos++){
		push @interl, 
		$d2->[$pos], $d3->[$pos];
	    }

	    my (%orbit, $entry, $refent);

	    for(my $rot=0; $rot<12; $rot+=2){
		$entry = 
		    [@interl[$rot..11],
		     @interl[0..$rot-1]];
		$orbit{join('-', @$entry)} = 1;
	    }

	    for(my $refl=0; $refl<12; $refl+=4){
		$entry = 
		    [@interl[$refl..11],
		     @interl[0..$refl-1]];

		$refent =
		    [$entry->[0], 
		     reverse(@$entry[1..11])];
		$orbit{join('-', @$refent)} = 1;

		$refent =
		    [$entry->[2], 
		     $entry->[1], 
		     $entry->[0],
		     reverse(@$entry[3..11])];
		$orbit{join('-', @$refent)} = 1;
	    }

	    $orbits{join('|', sort(keys %orbit))} = 1; 
	}
    }

    print scalar(keys %orbits);

    printf " (%d)\n",
    (6**6
     + 2 * 6
     + 2 * 6**2
     + 6**3
     + 3 * 2**4 * 3**3
     + 3 * 2**3 * 3**4)/12;
    
    1;
}