Buggy python submission (verdict: Time Limit Exceeded):
n = int(input())
tmp = input()
x = int(tmp,2)
y = list(tmp)
zuru = [0, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 3, 1, 2, 1, 2, 1, 1, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 2, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 3, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 3, 1, 2, 1, 2, 1, 1, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 1, 1, 2, 3, 1, 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 2, 3, 2, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 2, 3, 2, 3, 1, 2, 1, 2, 1, 2, 1, 2, 2, 3, 1, 2, 1, 3, 2, 2, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 2, 1, 3, 2, 2, 2, 2, 2, 2, 1, 2, 2, 3, 1, 1, 2, 2, 3, 3, 2, 2, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 1, 1, 2, 3, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 3, 3, 1, 3, 1, 2, 2, 2, 2, 2, 1, 2, 1, 3, 1, 3, 2, 2, 2, 3, 2, 2, 1, 2, 2, 3, 2, 3, 1, 2, 3, 3, 2, 2, 1, 2, 2, 3, 1, 2, 1, 2, 1, 1, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 1, 1, 2, 3, 1, 2, 2, 2, 2, 2, 2, 3, 1, 1, 2, 3, 1, 2, 2, 3, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 1, 3, 2, 3, 2, 3, 1, 2, 1, 1, 2, 3, 1, 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 2, 3, 2, 3, 1, 3, 1, 2, 1, 3, 2, 2, 2, 2, 2, 3, 1, 2, 2, 3, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 3, 3, 2, 2, 2, 3, 1, 1, 2, 3, 1, 2, 1, 3, 2, 3, 1, 2, 2, 2, 2, 2, 1, 2, 2, 3, 1, 1, 2, 2, 3, 3, 2, 2, 1, 3, 2, 3, 2, 3, 1, 3, 1, 3, 2, 2, 1, 2, 3, 3, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 3, 3, 1, 3, 1, 2, 1, 1, 2, 3, 3, 2, 2, 2, 2, 3, 1, 2, 2, 2, 2, 3, 1, 2, 2, 3, 2, 3, 1, 2, 3, 3, 2, 2, 1, 3, 2, 3, 2, 3, 1, 2, 2, 2, 3, 3, 1, 2, 2, 3, 2, 3, 2, 3, 1, 2, 1, 2, 1, 2, 2, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 3, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 1, 1, 2, 3, 2, 2, 2, 2, 3, 1, 1, 2, 3, 1, 2, 1, 2, 2, 3, 2, 2, 1, 2, 2, 3, 2, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 2, 3, 2, 3, 1, 3, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 3, 2, 1, 3, 2, 1, 1, 1, 2, 3, 3, 3, 1, 2, 2, 3, 2, 3, 1, 1, 2, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 2, 1, 3, 2, 2, 2, 2, 2, 2, 1, 2, 2, 3, 1, 1, 2, 2, 3, 3, 2, 2, 1, 2, 2, 1, 1, 2, 3, 2, 1, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 1, 3, 2, 2, 2, 3, 2, 3, 1, 2, 2, 3, 2, 3, 1, 2, 3, 3, 2, 3, 1, 3, 2, 3, 1, 2, 3, 2, 1, 3, 2, 2, 2, 2, 2, 3, 2, 1, 2, 3, 2, 3, 2, 2, 1, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 1, 2, 2, 3, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 1, 3, 2, 3, 2, 3, 1, 2, 2, 2, 2, 3, 1, 1, 2, 3, 1, 2, 1, 2, 2, 3, 2, 3, 1, 2, 3, 3, 1, 3, 1, 2, 2, 3, 2, 2, 1, 3, 2, 3, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 2, 3, 2, 3, 1, 1, 1, 2, 1, 3, 2, 2, 2, 2, 2, 3, 1, 3, 2, 1, 2, 3, 1, 1, 2, 3, 3, 3, 1, 3, 2, 3, 2, 1, 1, 2, 3, 3, 1, 3, 1, 2, 2, 3, 2, 3, 1, 1, 2, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 2, 2, 3, 1, 1, 2, 2, 3, 3, 2, 2, 1, 3, 2, 3, 2, 3, 1, 2, 1, 3, 2, 2, 1, 2, 2, 3, 1, 2, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 2, 1, 2, 3, 3, 2, 2, 2, 3, 2, 3, 2, 3, 1, 2, 2, 3, 2, 3, 1, 2, 3, 3, 2, 3, 1, 1, 2, 3, 2, 3, 1, 2, 2, 2, 2, 3, 1, 3, 2, 3, 2, 3, 2, 2, 2, 3, 2, 2, 1, 3, 2, 3, 2, 1, 2, 3, 3, 3, 2, 2, 1, 2, 2, 3, 2, 3, 2, 3, 2, 2, 2, 2, 2, 2, 3, 3, 1]

_max = pow(2, n-1)
itr = 0
hoge = False
one_num = bin(x).count("1")
while 1:
  n = x ^ _max
  if y[itr] == "0":
    hoge = True
    one_num += 1
  else:
    one_num -= 1
  count = 0
  while n != 0:
    n = n % one_num
    count += 1
    if 0 <= n <=1024:
      count += zuru[n]
      break
  print(count)
  n = x ^ _max
  _max = _max // 2
  itr += 1
  if hoge is True:
    one_num -= 1
    hoge = False
  else:
    one_num += 1
  if _max == 0:
    break

Fixed submission:
N=int(input())
X=input()
Y=int(X,2)
Z=Y
C=X.count('1')
if C==1:
  for i in range(N):
    if X[i]=='1':
      print(0)
    elif i==N-1:
      print(2)
    else:
      print(1)
  exit()
Y,Z=Y%(C+1),Z%(C-1)

def f(x):
  if x==0:
    return 0
  return 1+f(x%bin(x).count('1'))

for i in range(N):
  if X[i]=='1':
    print(1+f((Z-pow(2,N-i-1,C-1))%(C-1)))
  else:
    print(1+f((Y+pow(2,N-i-1,C+1))%(C+1)))

Buggy python submission (verdict: Time Limit Exceeded):
n = int(input())
x = int(input(),2)
zuru = [0, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 3, 1, 2, 1, 2, 1, 1, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 2, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 3, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 3, 1, 2, 1, 2, 1, 1, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 1, 1, 2, 3, 1, 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 2, 3, 2, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 2, 3, 2, 3, 1, 2, 1, 2, 1, 2, 1, 2, 2, 3, 1, 2, 1, 3, 2, 2, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 2, 1, 3, 2, 2, 2, 2, 2, 2, 1, 2, 2, 3, 1, 1, 2, 2, 3, 3, 2, 2, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 1, 1, 2, 3, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 3, 3, 1, 3, 1, 2, 2, 2, 2, 2, 1, 2, 1, 3, 1, 3, 2, 2, 2, 3, 2, 2, 1, 2, 2, 3, 2, 3, 1, 2, 3, 3, 2, 2, 1, 2, 2, 3, 1, 2, 1, 2, 1, 1, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 1, 1, 2, 3, 1, 2, 2, 2, 2, 2, 2, 3, 1, 1, 2, 3, 1, 2, 2, 3, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 1, 3, 2, 3, 2, 3, 1, 2, 1, 1, 2, 3, 1, 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 2, 3, 2, 3, 1, 3, 1, 2, 1, 3, 2, 2, 2, 2, 2, 3, 1, 2, 2, 3, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 3, 3, 2, 2, 2, 3, 1, 1, 2, 3, 1, 2, 1, 3, 2, 3, 1, 2, 2, 2, 2, 2, 1, 2, 2, 3, 1, 1, 2, 2, 3, 3, 2, 2, 1, 3, 2, 3, 2, 3, 1, 3, 1, 3, 2, 2, 1, 2, 3, 3, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 3, 3, 1, 3, 1, 2, 1, 1, 2, 3, 3, 2, 2, 2, 2, 3, 1, 2, 2, 2, 2, 3, 1, 2, 2, 3, 2, 3, 1, 2, 3, 3, 2, 2, 1, 3, 2, 3, 2, 3, 1, 2, 2, 2, 3, 3, 1, 2, 2, 3, 2, 3, 2, 3, 1, 2, 1, 2, 1, 2, 2, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 3, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 1, 1, 2, 3, 2, 2, 2, 2, 3, 1, 1, 2, 3, 1, 2, 1, 2, 2, 3, 2, 2, 1, 2, 2, 3, 2, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 2, 3, 2, 3, 1, 3, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 3, 2, 1, 3, 2, 1, 1, 1, 2, 3, 3, 3, 1, 2, 2, 3, 2, 3, 1, 1, 2, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 2, 1, 3, 2, 2, 2, 2, 2, 2, 1, 2, 2, 3, 1, 1, 2, 2, 3, 3, 2, 2, 1, 2, 2, 1, 1, 2, 3, 2, 1, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 1, 3, 2, 2, 2, 3, 2, 3, 1, 2, 2, 3, 2, 3, 1, 2, 3, 3, 2, 3, 1, 3, 2, 3, 1, 2, 3, 2, 1, 3, 2, 2, 2, 2, 2, 3, 2, 1, 2, 3, 2, 3, 2, 2, 1, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 1, 2, 2, 3, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 1, 3, 2, 3, 2, 3, 1, 2, 2, 2, 2, 3, 1, 1, 2, 3, 1, 2, 1, 2, 2, 3, 2, 3, 1, 2, 3, 3, 1, 3, 1, 2, 2, 3, 2, 2, 1, 3, 2, 3, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 2, 3, 2, 3, 1, 1, 1, 2, 1, 3, 2, 2, 2, 2, 2, 3, 1, 3, 2, 1, 2, 3, 1, 1, 2, 3, 3, 3, 1, 3, 2, 3, 2, 1, 1, 2, 3, 3, 1, 3, 1, 2, 2, 3, 2, 3, 1, 1, 2, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 2, 2, 3, 1, 1, 2, 2, 3, 3, 2, 2, 1, 3, 2, 3, 2, 3, 1, 2, 1, 3, 2, 2, 1, 2, 2, 3, 1, 2, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 2, 1, 2, 3, 3, 2, 2, 2, 3, 2, 3, 2, 3, 1, 2, 2, 3, 2, 3, 1, 2, 3, 3, 2, 3, 1, 1, 2, 3, 2, 3, 1, 2, 2, 2, 2, 3, 1, 3, 2, 3, 2, 3, 2, 2, 2, 3, 2, 2, 1, 3, 2, 3, 2, 1, 2, 3, 3, 3, 2, 2, 1, 2, 2, 3, 2, 3, 2, 3, 2, 2, 2, 2, 2, 2, 3, 3, 1]

_max = pow(2, n-1)
while 1:
  n = x ^ _max
  count = 0
  while n != 0:
    n = n % bin(n).count("1")
    count += 1
    if 0 <= n <=1024:
      count += zuru[n]
      break
  print(count)
  n = x ^ _max
  _max = _max // 2
  if _max == 0:
    break

Fixed submission:
N=int(input())
X=input()
Y=int(X,2)
Z=Y
C=X.count('1')
if C==1:
  for i in range(N):
    if X[i]=='1':
      print(0)
    elif i==N-1:
      print(2)
    else:
      print(1)
  exit()
Y,Z=Y%(C+1),Z%(C-1)

def f(x):
  if x==0:
    return 0
  return 1+f(x%bin(x).count('1'))

for i in range(N):
  if X[i]=='1':
    print(1+f((Z-pow(2,N-i-1,C-1))%(C-1)))
  else:
    print(1+f((Y+pow(2,N-i-1,C+1))%(C+1)))

Buggy python submission (verdict: Runtime Error):
n = int(input())
x = int(input(),2)
zuru = [0, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 3, 1, 2, 1, 2, 1, 1, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 2, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 3, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 3, 1, 2, 1, 2, 1, 1, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 1, 1, 2, 3, 1, 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 2, 3, 2, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 2, 3, 2, 3, 1, 2, 1]

_max = pow(2, n-1)
while 1:
  n = x ^ _max
  count = 0
  while n != 0:
    if 0 <= n <=1024:
      count += zuru[n]
      break
    n = n % bin(n).count("1")
    count += 1
  print(count)
  n = x ^ _max
  _max = _max // 2
  if _max == 0:
    break

Fixed submission:
N=int(input())
X=input()
Y=int(X,2)
Z=Y
C=X.count('1')
if C==1:
  for i in range(N):
    if X[i]=='1':
      print(0)
    elif i==N-1:
      print(2)
    else:
      print(1)
  exit()
Y,Z=Y%(C+1),Z%(C-1)

def f(x):
  if x==0:
    return 0
  return 1+f(x%bin(x).count('1'))

for i in range(N):
  if X[i]=='1':
    print(1+f((Z-pow(2,N-i-1,C-1))%(C-1)))
  else:
    print(1+f((Y+pow(2,N-i-1,C+1))%(C+1)))

Buggy python submission (verdict: Time Limit Exceeded):
n = int(input())
x = list(input())
zuru = [0, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 3, 1, 2, 1, 2, 1, 1, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 2, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 3, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 3, 1, 2, 1, 2, 1, 1, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 1, 1, 2, 3, 1, 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 2, 3, 2, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 2, 3, 2, 3, 1, 2, 1, 2, 1, 2, 1, 2, 2, 3, 1, 2, 1, 3, 2, 2, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 2, 1, 3, 2, 2, 2, 2, 2, 2, 1, 2, 2, 3, 1, 1, 2, 2, 3, 3, 2, 2, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 1, 1, 2, 3, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 3, 3, 1, 3, 1, 2, 2, 2, 2, 2, 1, 2, 1, 3, 1, 3, 2, 2, 2, 3, 2, 2, 1, 2, 2, 3, 2, 3, 1, 2, 3, 3, 2, 2, 1, 2, 2, 3, 1, 2, 1, 2, 1, 1, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 1, 1, 2, 3, 1, 2, 2, 2, 2, 2, 2, 3, 1, 1, 2, 3, 1, 2, 2, 3, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 1, 3, 2, 3, 2, 3, 1, 2, 1, 1, 2, 3, 1, 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 2, 3, 2, 3, 1, 3, 1, 2, 1, 3, 2, 2, 2, 2, 2, 3, 1, 2, 2, 3, 2, 3, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 3, 3, 2, 2, 2, 3, 1, 1, 2, 3, 1, 2, 1, 3, 2, 3, 1, 2, 2, 2, 2, 2, 1, 2, 2, 3, 1, 1, 2, 2, 3, 3, 2, 2, 1, 3, 2, 3, 2, 3, 1, 3, 1, 3, 2, 2, 1, 2, 3, 3, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 3, 3, 1, 3, 1, 2, 1, 1, 2, 3, 3, 2, 2, 2, 2, 3, 1, 2, 2, 2, 2, 3, 1, 2, 2, 3, 2, 3, 1, 2, 3, 3, 2, 2, 1, 3, 2, 3, 2, 3, 1, 2, 2, 2, 3, 3, 1, 2, 2, 3, 2, 3, 2, 3, 1, 2, 1, 2, 1, 2, 2, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 3, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 1, 1, 2, 3, 2, 2, 2, 2, 3, 1, 1, 2, 3, 1, 2, 1, 2, 2, 3, 2, 2, 1, 2, 2, 3, 2, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 2, 3, 2, 3, 1, 3, 2, 2, 2, 2, 1, 3, 2, 3, 1, 2, 3, 2, 1, 3, 2, 1, 1, 1, 2, 3, 3, 3, 1, 2, 2, 3, 2, 3, 1, 1, 2, 3, 1, 2, 1, 3, 2, 2, 2, 2, 1, 2, 2, 2, 1, 3, 2, 2, 2, 2, 2, 2, 1, 2, 2, 3, 1, 1, 2, 2, 3, 3, 2, 2, 1, 2, 2, 1, 1, 2, 3, 2, 1, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 1, 3, 2, 2, 2, 3, 2, 3, 1, 2, 2, 3, 2, 3, 1, 2, 3, 3, 2, 3, 1, 3, 2, 3, 1, 2, 3, 2, 1, 3, 2, 2, 2, 2, 2, 3, 2, 1, 2, 3, 2, 3, 2, 2, 1, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 1, 2, 2, 3, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 1, 3, 2, 3, 2, 3, 1, 2, 2, 2, 2, 3, 1, 1, 2, 3, 1, 2, 1, 2, 2, 3, 2, 3, 1, 2, 3, 3, 1, 3, 1, 2, 2, 3, 2, 2, 1, 3, 2, 3, 2, 2, 2, 1, 1, 2, 3, 3, 1, 2, 2, 3, 2, 3, 1, 1, 1, 2, 1, 3, 2, 2, 2, 2, 2, 3, 1, 3, 2, 1, 2, 3, 1, 1, 2, 3, 3, 3, 1, 3, 2, 3, 2, 1, 1, 2, 3, 3, 1, 3, 1, 2, 2, 3, 2, 3, 1, 1, 2, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 2, 2, 3, 1, 1, 2, 2, 3, 3, 2, 2, 1, 3, 2, 3, 2, 3, 1, 2, 1, 3, 2, 2, 1, 2, 2, 3, 1, 2, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 2, 1, 2, 3, 3, 2, 2, 2, 3, 2, 3, 2, 3, 1, 2, 2, 3, 2, 3, 1, 2, 3, 3, 2, 3, 1, 1, 2, 3, 2, 3, 1, 2, 2, 2, 2, 3, 1, 3, 2, 3, 2, 3, 2, 2, 2, 3, 2, 2, 1, 3, 2, 3, 2, 1, 2, 3, 3, 3, 2, 2, 1, 2, 2, 3, 2, 3, 2, 3, 2, 2, 2, 2, 2, 2, 3, 3, 1]

for i in range(len(x)):
  y = x.copy()
  if x[i] == "0":
    y[i] = "1"
  else:
    y[i] = "0"
  n = int("".join(y), 2)
  count = 0
  while n != 0:
    if 0 <= n <=1024:
      count += zuru[n]
      break
    one_num = bin(n)
    n = n % one_num.count("1")
    count += 1
  print(count)

Fixed submission:
N=int(input())
X=input()
Y=int(X,2)
Z=Y
C=X.count('1')
if C==1:
  for i in range(N):
    if X[i]=='1':
      print(0)
    elif i==N-1:
      print(2)
    else:
      print(1)
  exit()
Y,Z=Y%(C+1),Z%(C-1)

def f(x):
  if x==0:
    return 0
  return 1+f(x%bin(x).count('1'))

for i in range(N):
  if X[i]=='1':
    print(1+f((Z-pow(2,N-i-1,C-1))%(C-1)))
  else:
    print(1+f((Y+pow(2,N-i-1,C+1))%(C+1)))

Buggy python submission (verdict: Time Limit Exceeded):
n = int(input())
x = list(input())
zuru = [1,1,2,1,2,1,2,1,2,1]

for i in range(len(x)):
  y = x.copy()
  if x[i] == "0":
    y[i] = "1"
  else:
    y[i] = "0"
  n = int("".join(y), 2)
  count = 0
  while n != 0:
    one_num = bin(n)
    n = n % one_num.count("1")
    count += 1
    if 0 < n <=10:
      count += zuru[n-1]
      break
  print(count)

Fixed submission:
N=int(input())
X=input()
Y=int(X,2)
Z=Y
C=X.count('1')
if C==1:
  for i in range(N):
    if X[i]=='1':
      print(0)
    elif i==N-1:
      print(2)
    else:
      print(1)
  exit()
Y,Z=Y%(C+1),Z%(C-1)

def f(x):
  if x==0:
    return 0
  return 1+f(x%bin(x).count('1'))

for i in range(N):
  if X[i]=='1':
    print(1+f((Z-pow(2,N-i-1,C-1))%(C-1)))
  else:
    print(1+f((Y+pow(2,N-i-1,C+1))%(C+1)))

Buggy python submission (verdict: Time Limit Exceeded):
n = int(input())
x = list(input())

for i in range(len(x)):
  if x[i] == "0":
    x[i] = "1"
  else:
    x[i] = "0"
  n = int("".join(x), 2)
  count = 0
  while n != 0:
    one_num = bin(n)
    n = n % one_num.count("1")
    count += 1
  print(count)
  if x[i] == "0":
    x[i] = "1"
  else:
    x[i] = "0"

Fixed submission:
N=int(input())
X=input()
Y=int(X,2)
Z=Y
C=X.count('1')
if C==1:
  for i in range(N):
    if X[i]=='1':
      print(0)
    elif i==N-1:
      print(2)
    else:
      print(1)
  exit()
Y,Z=Y%(C+1),Z%(C-1)

def f(x):
  if x==0:
    return 0
  return 1+f(x%bin(x).count('1'))

for i in range(N):
  if X[i]=='1':
    print(1+f((Z-pow(2,N-i-1,C-1))%(C-1)))
  else:
    print(1+f((Y+pow(2,N-i-1,C+1))%(C+1)))