Karat's interview evaluation tooling needs to identify every location where a search term appears in a character grid. Given a 2D matrix of characters and a target string, return every path of coordinates whose characters spell the target in order.
A path may move one cell up, down, left, or right at each step. It may not move diagonally, leave the matrix, or reuse a cell within the same path. Return paths in row-major order by their starting coordinate. The order of paths with the same starting coordinate does not matter.
Implement find_paths(board, target). board is a non-empty rectangular list of lists of one-character strings, and target is a non-empty string. Return a list of paths. Each path is a list of [row, column] coordinate pairs, with one pair for each character in target. Return an empty list if no path exists.
def find_paths(board, target):