### How can I get Sage to over all possible maps between two sets?

What I want to do is this : Say I take a graph $K_{n,n}$ and choose an ordering for each edge arbitrarily - say denote each edge as $(i,j)$ where $i$ is in the left partition and $j$ is in the right partition. I have a set of matrices $A = \left { A_1, A_2,...,A_k \right }$. I want to iterate over all possible ways in which one could have assigned an A matrix to an edge of this graph.

- How does one do that? (..apart from writing a massive sequence of nested loops!..)