what is big O notation
The order of growth in Big-O Notation refers to the relative magnitude or speed at which an algorithm will perform its computations when its input size grows.

An algorithm with a big O notation of `n^2` means that for every value of n, it takes at least twice as much time as any other algorithm that performs arithmetic on integers (which includes everything from simple addition and subtraction up through exponentiation). The exact formula for this type of notation can be quite complex, but intuitively speaking, it implies that there exists some constant c such that `n^2 > c * n`.

So, for example, if we have an algorithm whose big o notation is 2^x, then there must exist some constant k such that x >= log_2(k) - y where 0 