use v5.20;
use Data::Dump "pp";
my @z = glob('{a,b,c}'x6);
my $z = '(?:a()|a()|b()|b()|c()|c()){6}\1\2\3\4\5\6';
for my $j (@z)
{
$j =~ $z and say pp {$j => \@- };
}
####
...
{ acbcaa => [0, 6, 6, 3, 3, 4, 4] }
{ acbcab => [0, 5, 5, 6, 6, 4, 4] }
{ acbcac => [0, 5, 5, 3, 3, 6, 6] }
{ acbcba => [0, 6, 6, 5, 5, 4, 4] }
{ acbcca => [0, 6, 6, 3, 3, 5, 5] }
{ accaab => [0, 5, 5, 6, 6, 3, 3] }
{ accaba => [0, 6, 6, 5, 5, 3, 3] }
...
{ cccbab => [0, 5, 5, 6, 6, 3, 3] }
{ cccbac => [0, 5, 5, 4, 4, 6, 6] }
{ cccbba => [0, 6, 6, 5, 5, 3, 3] }
{ cccbca => [0, 6, 6, 4, 4, 5, 5] }
{ ccccab => [0, 5, 5, 6, 6, 4, 4] }
{ ccccba => [0, 6, 6, 5, 5, 4, 4] }
####
my @y = glob('{a,b,c}'x6);
my $y = '(?:(?!\1)a()|(?!\2)a()|(?!\3)b()|(?!\4)b()|(?!\5)c()|(?!\6)c()){6}\1\2\3\4\5\6';
for my $j (@y)
{
$j =~ $y and say $j;
}
####
aabbcc
aabcbc
aabccb
aacbbc
aacbcb
aaccbb
ababcc
abacbc
abaccb
...
ccbaab
ccbaba
ccbbaa
####
# edit reformatted as a multiline regex for clarity
my $y = qr/(?:
(?!\1) a ()
| (?!\2) a ()
| (?!\3) b ()
| (?!\4) b ()
| (?!\5) c ()
| (?!\6) c ()
){6}
/x;