perfect code (avec solution)