$n = 1; while (! $ok) { %p1 = %{d($n)}; %p2 = %{d($n * 2)}; %p3 = %{d($n * 3)}; %p4 = %{d($n * 4)}; %p5 = %{d($n * 5)}; %p6 = %{d($n * 6)}; $ok = c(\%p1,\%p2) && c(\%p2,\%p3) && c(\%p3,\%p4) && c(\%p4,\%p5) && c(\%p5,\%p6); $n++; } print '' . ($n - 1) . "\n"; sub c { my ($q,$r) = @_; %a = %{$q}; %b = %{$r}; $ok = 1; if (length(keys(%a)) != length(keys(%a))) { $ok = 0; return 0; } else { foreach $k (keys(%a)) { if ($b{$k} != 1) { $ok = 0; return 0; } } } return $ok; } sub d { my ($j) = @_; %digits = (); for ($i = 0; $i < length($j); $i++) { $digits{substr($j,$i,1)} = 1; } return \%digits; }