Hard to make it messy with only 2 events, I was expecting something crazy :D
Anyway I would go about this by using Tile Movement behaviour because I've been using it recently and it's really cool. Your object would be invisible and you can use the behaviour to check if you can move to an adjacent tile. There is a condition 'can move to tile', the ones you cannot move to would be solid and the ones you can move to would be the current gridposition.x,gridposition.y with +/- 1 depending on the direction.
You then move the invisible object (simulate control in a direction) to the next tile and mark it with the circle, and the conditions are then based on the new tile. Also a bonus for this is it works very well if you decide you want to make it a moveable character like in the video rather than clicking, so you could give control to the invisible object/player to move to only adjacent squares like in that puzzle.