Development for this editorial is a bit in difficult waters. Solving the div1 hard problem might take a while. But here are some explanations for the easier (less hard) problems.
Finding out the division 1 medium solution was a bit embarrassing. Meet in the middle was actually one of the first ideas I had for the problem. But something made me believe that meet in the middle wouldn't work because of memory. It makes no sense, the limit on the number of things to store in memory is O(105), it does not matter if the number of valid keys that could be generated is O(550), because we will use a std::map anyway.
The remaining problems (except for div2 250) are looking to be tougher to explain. Div2 500
and div1 250 are not too easy to prove. Div1 1000 is looking undoable right now and I am yet to receive the usual help message from admins about it. Codeforces is as always the only place to have explanations for these div1 hard problems and as usual the explanations are in Russian and very short ^^.
Div2 500 is much harder than it should have been. I think using the problem that was div1 250 would have been ok for this slot.
As you can see, the editorial is so preliminary right now it doesn't even have the usual problem statistics and links. It will be fixed soon, I hope.