inita :: Int -> [(Int, Int)]
inita s = [(7, s)]
cofmap f (a,b) = (a, f b)
isEnd max (a, b) = a + b > max
steps :: [(Int, Int) -> (Int, Int)]
steps = [fmap (+1), fmap (*2), cofmap (+1), cofmap (*2)]
foo x c = if any (isEnd 55) (steps <*> inita x) --вот тут нужно, чтобы steps применялся c раз
then c
else foo x (c + 1)