The only real hard part about this puzzle is the planning stage. Once you got a good plan, and don't worry about optimization from the start, it is easier, though still a bit complicated.