https://medium.com/@chaudhurysrijani/different-types-of-distances-used-in-machine-learning-ec7087616442