https://llego.dev/posts/solving-two-water-jug-interview-question-python/