Unreasonable struggles with the first problem, part 1 was super easy, part 2 was tough to track the visited locations recursively. I spent way too much time trying to figure it out, eventually wrote it in Python in like 5 minutes and then used that as a guide (even though I didn't use functional programming in Python).
Moved around in the keypad checking that the move was valid - for practice I switched my original python soln to be totally functional and then translated it to ocaml.