$k1){ foreach($a as $v2=>$k2){ $got = ""; for($i = 0;$i < strlen($k1);$i++){ $got .= proc2($key[$i], $k1[$i], $k2[$i]); if(substr($got, 0, $i+1) != substr($target, 0, $i+1)) break; } if($got == $target) die("$key $k1($v1) $k2($v2) = $got\n"); } } } elseif($len == 8 || $len == 10){ foreach($a as $v1=>$k1){ foreach($a as $v2=>$k2){ if($v2 <= $v1) continue; foreach($a as $v3=>$k3){ if($v3 <= $v2 || $v3 <= $v1) continue; $got = ""; for($i = 0;$i < strlen($k1);$i++){ if($len == 10) $got .= proc3b($key[$i], $k1[$i], $k2[$i], $k3[$i]); else $got .= proc3a($key[$i], $k1[$i], $k2[$i], $k3[$i]); if(substr($got, 0, $i+1) != substr($target, 0, $i+1)) break; } if($got == $target) die("$key $k1($v1) $k2($v2) $k3($v3) = $got\n"); } } } } echo "Solution for $key to $target not found\n";