Exploring algorithms and data structures using Python