I liked the puzzle approach instead of the (purely) simulation approach normally associated with this concept. Well done!