Find the puppy
Proposed by Debanuj Nayak.
There are 5 boxes with lids kept in a row.
    
Let's call them B[1...5].
There is a puppy P inside one of these boxes. Our goal is to find the puppy.
[?] [?] [?] [?] [?]
Every morning you get a chance to open any one of the boxes. If you find the puppy, Great, congrats.
If you don't, tough luck, you have to wait again for the next day. Meanwhile, during the night, the Puppy will move to one of the neighbouring boxes.(can't stay in same box). Eg:
 [P]    -> [P]     or   [P]  .
- Does there exist protocols (ways of opening boxes) in which I can guarantee that I can catch the puppy in a finite time?
- If yes, what is the smallest number of days I have to wait to catch the puppy (Which is the best protocol?)
- How does this protocol work? (basically an informal proof)