code: def get_opcodes_from_bp_table(bp):
      
      x = len(bp) - 1
      y = len(bp[0]) - 1
      opcodes = []
      while x != 0 or y != 0:
          this_bp = bp[x][y]
          opcodes.append(this_bp)
          if this_bp[0] == EQUAL or this_bp[0] == REPLACE:
              x = x - 1
              y = y - 1
          elif this_bp[0] == INSERT:
              y = y - 1
          elif this_bp[0] == DELETE:
              x = x - 1
      opcodes.reverse()
      return opcodes
docs: Given a 2d list structure, collect the opcodes from the best path.