Si el problema es de optimizacion, se me ocurre que solo necesitarias, 2 bytes para almacenar el codigo(4 bits por digito) y solo un bit para comprobar si el password coincide.
Por ejemplo, cuando el usuario ingresa el primer digito, inicializar la variable BOOLEANA a TRUE.
Luego procedes a comparar el primer digito, y a continuacion iras comparando los 3 digitos restantes. Si en alguna de estas 4 comparaciones, el resultado no es el esperado(lo que equivale a que el digito no coincide con el del pass) cambias la variable booleana a FALSE.
Si al ingresar el 4to digito y compararlo, el pass ingresado habra sido el correcto solo si la variable booleana vale TRUE.
Simplificando:
Inicializar variable a TRUE;
Comparar el valor ingresado digito a digito con el del pass. Si en algun momento el digito no corresponde con el pass, cambiar la variable a FALSE;
si luego de comparar el 4to digito, la variable aun vale TRUE, permitir acceso, sino...tu ya sabras que hacer...
Saludos.