https://medium.com/@ryk.kiel/big-o-notation-demystified-how-to-measure-time-complexity-in-python-724ac1eb0bee