Поезд мчится сквозь бескрайние поля, унося вдаль одинокий лай. Щенок по кличке Тим просыпается в пустом вагоне и не помнит, как здесь оказался. За окном проплывают незнакомые станции, а в кармане его жилета находят лишь старый билет с размытой надписью «Гав-гав». Тим не знает, кто он, откуда и куда держит путь. Единственная зацепка — запах знакомого пирога, который доносится из соседнего купе, но дверь туда заперта. В тамбуре он встречает девочку с перевязанным ухом, которая утверждает, что видела его во сне. Она говорит, что поезд не останавливается, пока каждый пассажир не вспомнит своё имя. Тим пытается расспросить проводника — огромного пса в фуражке, но тот лишь загадочно улыбается и советует заглянуть в багажное отделение. Там, среди старых чемоданов, щенок находит фотографию: он стоит на перроне рядом с мамой, но её лицо стёрто. С этого момента Тим начинает понимать: поезд везёт его не в новое место, а обратно — в тот день, когда он потерялся.
На каждой остановке состав наполняется новыми пассажирами: кошка, которая ищет свой потерянный голос, хромой заяц, убегающий от собственной тени, и старый пёс, который помнит все маршруты, но забыл, как выглядит его дом. Тим помогает им, а они — ему. Постепенно он собирает пазл: оказывается, он сбежал из дома, обидевшись на маму за то, что она не купила ему игрушечный поезд. Но в тот же день мама попала под дождь, простудилась и теперь ждёт его на станции «Гав-гав», которая существует только в детских воспоминаниях. Поезд начинает таять, вагоны превращаются в облака пара, и Тим понимает: если он не сойдёт на следующей остановке, то навсегда останется в этом мире снов. Он бежит по коридору, перепрыгивая через чемоданы, и на последней секунде выпрыгивает из дверей. Вокруг — знакомая улица, мокрый асфальт и мама с зонтиком. Она улыбается и протягивает ему ту самую игрушку. Тим прижимается к ней, чувствуя запах пирога, и понимает: иногда, чтобы вернуться домой, нужно уехать очень далеко.