Not quite sub-400 - oh well! The input has 5 bits, and the output has a left metal and a right metal. The encoding works like this: Start with Tin-Tin, which is the all-salts output. If the right-most bit is fire, then the right metal starts as Lead instead. If the middle-bit is fire, then the left metal starts as Lead instead. If the middle-right bit is fire, then we will do two projections. Normally, this will project the left metal once and the right metal once. The exception is if we currently have Lead-Lead - in this case, we "hiccup" the projections so both go to the left metal. This prevents "**🜂🜂🜂" from mapping to the same output as "**🜔🜔🜔". If the leftmost bit is fire, then the right metal gets 3 projections. If the middle-left bit is fire, then the left metal gets 3 projections. Nice and simple, I think! Purification is used so the solve isn't limited by quicksilver so much. Additionally, blocking the lead input is a little faster than wanding lead around, so that's why the all-salts state is Tin-Tin instead of Lead-Lead. ===== ENCODING ===== 0. 🜔🜔🜔🜔🜔 => Tin-Tin 1. 🜔🜔🜔🜔🜂 => Tin-Lead 2. 🜔🜔🜔🜂🜔 => Iron-Iron 3. 🜔🜔🜔🜂🜂 => Iron-Tin 4. 🜔🜔🜂🜔🜔 => Lead-Tin 5. 🜔🜔🜂🜔🜂 => Lead-Lead 6. 🜔🜔🜂🜂🜔 => Tin-Iron 7. 🜔🜔🜂🜂🜂 => Iron-Lead 8. 🜔🜂🜔🜔🜔 => Silver-Tin 9. 🜔🜂🜔🜔🜂 => Silver-Lead 10. 🜔🜂🜔🜂🜔 => Gold-Iron 11. 🜔🜂🜔🜂🜂 => Gold-Tin 12. 🜔🜂🜂🜔🜔 => Copper-Tin 13. 🜔🜂🜂🜔🜂 => Copper-Lead 14. 🜔🜂🜂🜂🜔 => Silver-Iron 15. 🜔🜂🜂🜂🜂 => Gold-Lead 16. 🜂🜔🜔🜔🜔 => Tin-Silver 17. 🜂🜔🜔🜔🜂 => Tin-Copper 18. 🜂🜔🜔🜂🜔 => Iron-Gold 19. 🜂🜔🜔🜂🜂 => Iron-Silver 20. 🜂🜔🜂🜔🜔 => Lead-Silver 21. 🜂🜔🜂🜔🜂 => Lead-Copper 22. 🜂🜔🜂🜂🜔 => Tin-Gold 23. 🜂🜔🜂🜂🜂 => Iron-Copper 24. 🜂🜂🜔🜔🜔 => Silver-Silver 25. 🜂🜂🜔🜔🜂 => Silver-Copper 26. 🜂🜂🜔🜂🜔 => Gold-Gold 27. 🜂🜂🜔🜂🜂 => Gold-Silver 28. 🜂🜂🜂🜔🜔 => Copper-Silver 29. 🜂🜂🜂🜔🜂 => Copper-Copper 30. 🜂🜂🜂🜂🜔 => Silver-Gold 31. 🜂🜂🜂🜂🜂 => Gold-Copper