title: Finding all possible value combinations between two arrays
body: <p>I have two arrays of strings, not necessarily of the same length, I want to find all the possible "sets" of combinations between two values from the arrays, without repeats from either array.<br>
  For example, given the arrays:<br>
  { "A1", "A2", "A3" }<br>
  { "B1", "B2" }<br>
  The result I want is the following sets:<br>
  { ("A1", "B1"), ("A2", "B2") }<br>
  { ("A1", "B1"), ("A3", "B2") }<br>
  { ("A1", "B2"), ("A2", "B1") }<br>
  { ("A1", "B2"), ("A3", "B1") }<br>
  { ("A2", "B1"), ("A3", "B2") }<br>
  { ("A2", "B2"), ("A3", "B1") } </p>
  
  <p>My general direction is to create recursive function that takes as a parameter the two arrays and removes each "chosen" strings at a time, calling itself until either array is empty, however I'm kinda worried about performance issues (I need to run this code on about a 1000 pairs of string arrays).<br>
  Can anyone direct my towards an efficient method to do this?</p>