input: def calculate_bucket_drops(grid, capacity):
      import math
      """
      You have a rectangular grid of wells, with each row symbolizing an individual well. 
      The ones in the grid indicate units of water in the wells. Each well has a bucket 
      with an identical capacity to remove the water. Your goal is to determine the 
      number of times the 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]]
              capacity: 1
          Output: 6
  
      Example 2:
          Input: 
              grid: [[0,0,1,1], [0,0,0,0], [1,1,1,1], [0,1,1,1]]
              capacity: 2
          Output: 5
      
      Example 3:
          Input: 
              grid: [[0,0,0], [0,0,0]]
              capacity: 5
          Output: 0
  
      Constraints:
          * All wells have identical lengths
          * 1 <= grid.length <= 10^2
          * 1 <= grid[0].length <= 10^2
          * grid[i][j] is either 0 or 1
          * 1 <= capacity <= 10
      """
output:     
      rows = len(grid)
      cols = len(grid[0])
      total_water_units = sum(sum(row) for row in grid)
      bucket_drops = math.ceil(total_water_units / capacity)
      
      return bucket_drops
  