Added a python implementation that can be reduced to <150 bytes