code: def highest_match_action(ic, dc, sc, im, dm, sm, cost):
      
      # pylint: disable=unused-argument
      best_action = None
      lowest_cost = float("inf")
      max_match = max(im, dm, sm)
      if max_match == sm and cost == 0:
          best_action = EQUAL
          lowest_cost = sm
      elif max_match == sm and cost == 1:
          best_action = REPLACE
          lowest_cost = sm
      elif max_match == im and ic < lowest_cost:
          best_action = INSERT
          lowest_cost = ic
      elif max_match == dm and dc < lowest_cost:
          best_action = DELETE
          lowest_cost = dc
      return best_action
docs: Given the following values, choose the action (insertion, deletion, or
      substitution), that results in the highest match score (ties are broken
      using the distance values).  This is used within the dynamic programming
      algorithm.
  
      * ic - insertion cost
  
      * dc - deletion cost
  
      * sc - substitution cost
  
      * im - insertion match (score)
  
      * dm - deletion match (score)
  
      * sm - substitution match (score)