my $d = 0; my @s; for my $s (0 .. @p - 1) { if ($s[$s]) { $d++; } for (my $t = $s; !$s[$t]++; $t = $p[$t]) {} } if (0 != $d%2) { say "odd" } else { say "even" }