n = int(input().strip())
s = input().strip()  # 长度为 n 的 01 串

INF = 10**9

# dp[k][b]:处理到当前位置时,发生了 k 次相邻变化,且当前位置字符为 b(0/1) 的最少翻转次数
dp = [[INF] * 2 for _ in range(4)]

# 初始化第 0 位
for b in (0, 1):
    dp[0][b] = 0 if int(s[0]) == b else 1

# 逐位转移
for i in range(1, n):
    x = int(s[i])
    ndp = [[INF] * 2 for _ in range(4)]
    for k in range(4):
        for pre in (0, 1):
            if dp[k][pre] == INF:
                continue
            for cur in (0, 1):
                nk = k + (1 if pre != cur else 0)
                if nk <= 3:
                    cost = dp[k][pre] + (0 if x == cur else 1)
                    if cost < ndp[nk][cur]:
                        ndp[nk][cur] = cost
    dp = ndp

ans = min(dp[3][0], dp[3][1])
print(ans)