Run-length encoding is a trivial compression mechanism. It replaces a count of repeated data with a value-count pair. In the special case of encoding binary data, the value can be omitted since the values must alternate. For example, the run-length encoding for the binary number 1110000101100 is the sequence (3, 4, 1, 1, 2, 2).
By concatenating the binary value of each number in the sequence we obtain a new binary number: 11 100 1 1 10 10, which could, in turn, be similarly encoded.
The longevity of a number is the number of times a binary number can be run-length encoded and concatenated before the length of the bit sequence is reduced to two. For example, the longevity of 1110000101100 is eleven, as shown below.
1110000101100 11100111010 111011111 111101 10011 11010 10111 1111 100 110 101 111 11
Write a program to compute the longevity of a binary number.
Each dataset is a single binary number represented as a little endian integer. For example, the following shows the output from hexdump of input.bin, which contains the example number above.
$ hexdump -e '16/1 "%02x " "\n"' input.bin 2c 1c
The file described above contains the hexadecimal number 0x1c2c, whose binary representation is 0001 1100 0010 1100. The first encoding sequence is (3, 4, 1, 1, 2, 2) as described above. (Ignore leading zeros on input.)
Your program should compute the longevity of the number provided as described above. For example, the above input should produce the following.
{ "answer" : 11 }