my($w,@d)=@_;my@x=sort$w=~/\w/g;**=sub{$%=pop;*)=NestedLoops([map{my$x=$d[$@[$_]];[grep{$x->[$_]!~/[^$w]/}0..$#$x]}1..$%],sub{my@f=sort map$d[$@[$_]][$_[$_-1]],1..$%;$.[@.]="@f"if!$_{"@f"}++&&"@{[sort map/./g,@f]}"eq"@x"})};*(=sub{my($n,$k,$t)=@_;$@[$t]=$k;$n-$k?map&(($n-$k,0-$_,$t+1),(2*$k<$n?-$k:$k-$n)..-1:&*($t)};&((2*@x,1*@x,0);@.