input: Write a Python function `find_min_levels_for_points_advantage(possible: List[int]) -> int`:
  
  
  from typing import List
  
  def find_min_levels_for_points_advantage(possible: List[int]) -> int:
      """
      Given a binary array 'possible' of length n, two players, Alice and Bob, are playing a game with n levels. Levels marked with 0 are impossible to clear, while levels marked with 1 can always be cleared. Players gain 1 point for clearing a level and lose 1 point for failing a level.
  
      Alice plays the levels sequentially from the 0th level until she decides to stop, after which Bob plays the remaining levels.
  
      Determine the minimum number of levels Alice should play to have a greater score than Bob, assuming both play optimally to maximize their points.
  
      Return the minimum number of levels Alice should play to have a higher score than Bob. If it's not possible, return -1.
  
      Note that each player must play at least one level.
  
      Examples:
      >>> possible = [1,0,1,0]
      1
      >>> possible = [1,1,1,1,1]
      3
      >>> possible = [0,0]
      -1
  
      Constraints:
      2 <= n == possible.length <= 10^5
      possible[i] is either 0 or 1.
      """
  
output: def find_min_levels_for_points_advantage(possible: List[int]) -> int:
      n = len(possible)
      total_clears = sum(possible)
      alice_clears = 0
      
      for i in range(n):
          alice_clears += possible[i]
          bob_clears = total_clears - alice_clears
          
          if alice_clears > bob_clears:
              return i + 1
      
      return -1