Write a Python program that uses a breadth-first search algorithm to find the shortest path between two nodes in a directed acyclic graph. The program should take as input the graph in the form of an adjacency list or matrix and the starting and ending nodes. The output should be the shortest path between the two nodes and its length. The program should be well-commented and follow standard Python coding conventions. Efficiency optimizations are not required, but would be appreciated.
This prompt doesn't seem malicious.