input: def water_extraction_times(grid, capacity):
      import math
      """
      Given a grid of wells represented with rows, each '1' in a row signifies one unit of water.
      There are buckets available to draw water from the wells, and all buckets share the same capacity.
      Determine the number of times buckets need to be lowered to empty the wells.
  
      Example 1:
          Input: 
              grid : [[0,0,1,0], [0,1,0,0], [1,1,1,1]]
              bucket_capacity : 1
          Output: 6
  
      Example 2:
          Input: 
              grid : [[0,0,1,1], [0,0,0,0], [1,1,1,1], [0,1,1,1]]
              bucket_capacity : 2
          Output: 5
  
      Example 3:
          Input: 
              grid : [[0,0,0], [0,0,0]]
              bucket_capacity : 5
          Output: 0
  
      Constraints:
          * All wells have uniform length
          * 1 <= grid.length <= 100
          * 1 <= grid[:,1].length <= 100
          * grid[i][j] -> 0 or 1
          * 1 <= capacity <= 10
      """
output:     total_water_units = sum(row.count(1) for row in grid)
      return math.ceil(total_water_units / capacity)