Explain why you might choose DFS over BFS for a graph or tree problem. Implement dfs_path(graph, start, target) using iterative DFS, returning the first path discovered in the listed neighbor order, or [] if no path exists. The graph is a directed adjacency-list dictionary whose node identifiers are strings; return a list of node identifiers.
def dfs_path(graph, start, target):