Added validation when setting a Bucket value
Added null checks when checking value validity
Added a Move class for tracking potential puzzle moves
Added a method for retrieving a list of moves sorted by number of valid values
Added a Comparator implementation for sorting Move objects
Refactored the solution algorithm in the Main class to use better heuristics.