<｜begin▁of▁sentence｜>### Instruction:
Given a bipartite graph with two sets of nodes, top nodes {'A', 'B', 'C'} and bottom nodes {1, 2, 3}, and edges [('A', 1), ('B', 2), ('C', 3), ('A', 3)], can you use the eppstein_matching function from NetworkX to find the maximum cardinality matching?
### Response:
import networkx as nx
from networkx.algorithms import bipartite

# Create a bipartite graph
B = nx.Graph()
# Add nodes with the node attribute "bipartite"
B.add_nodes_from(['A', 'B', 'C'], bipartite=0)
B.add_nodes_from([1, 2, 3], bipartite=1)
# Add edges only between nodes of opposite node sets
B.add_edges_from([('A', 1), ('B', 2), ('C', 3), ('A', 3)])

top_nodes = {n for n, d in B.nodes(data=True) if d['bipartite']==0}
matching = bipartite.eppstein_matching(B, top_nodes=top_nodes)

print("Matching:", matching)
<|EOT|>
