Given a number `n` we will define its scORe to be `0 | 1 | 2 | 3 | ... | n`, where `|` is the [bitwise OR operator](https://en.wikipedia.org/wiki/Bitwise_operation#OR).

Write a function that takes `n` and finds its scORe.

---------------------
|    n    | scORe n |
|---------|-------- |       
| 0       | 0 |
| 1       | 1 |
| 49      | 63 |
| 1000000 | 1048575 |

Source: codewars | Difficulty: EASY
Tags: Bit manipulation

Starter code: def score(n):
	

Solutions:
score = lambda n: 2 ** n.bit_length() - 1


score = lambda n: (1 << n.bit_length()) - 1


def score(n):
	return 2 ** n.bit_length() - 1


def score(n):
	res = n
	while n:
		(res, n) = (res | n, n >> 1)
	return res


def score(n):
	return 0 if n == 0 else n | int(n.bit_length() * '1', 2)


def score(n):
	return n if n < 2 else pow(2, int(__import__('math').log(n, 2)) + 1) - 1


from math import log
score = lambda n: 2 ** int(1 + log(n, 2)) - 1 if n else 0


def score(n):
	return n and 2 ** (len(bin(n)) - 2) - 1


from math import ceil, log

def score(n):
	return 2 ** ceil(log(n, 2)) - 1 if n > 1 else n


from math import log2, ceil

def score(n):
	return n if n in (0, 1) else 2 ** ceil(log2(n)) - 1