import Data.Bits
import Data.Char
import Data.List

main = do
  li <- getLine
  let n = read li
  xs <- getLine
  mapM_ print $ compute n xs

compute :: Int -> String -> [Int]
compute n xs = [ f (x `xor` bit i) | i <- [n-1,n-2..0] ]
  where
    x = foldl' (\acc b -> acc+acc+b) 0 $ map digitToInt xs

step x = x `mod` popCount x
f x = length $ takeWhile (0 /=) $ iterate step x
{-
最大2万桁の2進数を扱うのは、Integerでやればできるかもしらんがどうかという。
最初のpopCountはたかだか2万なので、あまりもそれ未満。だから初回さえ乗り切ればあとは普通の整数で間に合う。
けどそれも面倒なので、IntegerのData.Bitsでゴリ押ししてみよう。
-}