const squaresNeeded = (grains, unit = 1, step = 0) => {
return grains < 1 ? step : squaresNeeded(grains - unit, unit * 2, step + 1);
};
// bit length solution
// inspired from python best practice
const squaresNeededBit = (grains) => (grains ? grains.toString(2).length : 0);