## https://yukicoder.me/problems/no/1863 def main(): N = int(input()) A = list(map(int, input().split())) B = list(map(int, input().split())) answer = 0 left = 0 right = 0 upper = A[left] b = B[left] & 1 lower_map = [0, 0] lower_map[b] = 1 while left < N: while right + 1 < N and upper & A[right + 1] == 0: right += 1 upper = upper | A[right] b = b ^ (B[right] & 1) lower_map[b] += 1 answer += lower_map[0] if left < right: upper -= A[left] b_ = B[left] & 1 lower_map[b_] -= 1 new_lower_map = [0, 0] for j in range(2): new_lower_map[j ^ b_] = lower_map[j] lower_map = new_lower_map left += 1 else: if right + 1 < N: left += 1 right += 1 upper = A[left] b = B[left] & 1 lower_map = [0, 0] lower_map[b] = 1 else: break print(answer) if __name__ == "__main__": main()