G = nx.complete_bipartite_graph(2, 3)
nx.draw(G, with_labels=True)
edges = G.edges()
A = []
maximum = len(nx.bipartite.eppstein_matching(G))
for x in range(len(edges)):
    b = nx.bipartite.eppstein_matching(G)
if len(b) != maximum:
    break
A += [nx.bipartite.eppstein_matching(G)]
G.remove_edge(*edges[x])
print(list(eval(x) for x in set(str(x) for x in A)))
plt.show()
All possible maximum matchings of a bipartite graph