A function (fn1) takes an input of numbers (of binary number string) and replaces each 1 with 01 and each 0 with 10.
```golang
func fn1(binary string) string {
result := ""
for i := 0; i < len(binary); i += 1 {
if binary[i] == '0' {
result += "10"
} else if binary[i] == '1' {
result += "01"
}
}
return result
}
// fn1(1) = 01
// fn1(01) = 1001
// fn(1001) = 01101001
```
function fn2 calls fn1 n times starting with 1
```golang
func fn2(n int) string {
s := "1"
for i := 0; i < n; i += 1 {
s = fn1(s)
}
return s
}
// fn2(1) = 01
// fn2(2) = 1001
// fn2(3) = 01101001
```
find the number of consecutive zeroes that will be returned on calling fn2 with an integer n.
```haskell
f(1) = 0 -- fn2(1) = 01
f(2) = 1 -- fn2(2) = 1001
f(3) = 1 -- fn2(3) = 01101001
f(4) = 3 -- fn2(4) = 1001011001101001
f(10) = 171 -- fn2(10) = 1001011001101001011010011001011001101001100101101001011001101001011010011001011010010110011010011001011001101001011010011001011001101001100101101001011001101001100101100110100101101001100101101001011001101001011010011001011001101001100101101001011001101001011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110011010011001011010010110011010011001011001101001011010011001011001101001100101101001011001101001011010011001011010010110011010011001011001101001011010011001011001101001100101101001011001101001100101100110100101101001100101101001011001101001011010011001011001101001100101101001011001101001100101100110100101101001100101100110100110010110100101100110100101101001100101101001011001101001100101100110100101101001100101101001011001101001011010011001011001101001100101101001011001101001011010011001011010010110011010011001011001101001011010011001011001101001100101101001011001101001100101100110100101101001100101101001011001101001011010011001011001101001100101101001011001101001
f(16) = 10923 -- fn2(16) is 65536 characters
```