title: Concise solution for number of sets contained within
body: <p>Let's say I have a short list of strings, that can contain duplicates: &lt;"A", "A", "B", "B", "C", "C", "D", "E", "F"></p>
  
  <p>Then let's say I have some other string lists, which may or may not be subsets of the original list. I need to know:</p>
  
  <ol>
  <li>Does the second set "cover" the first set (e.g., is every item in the first set also contained in the second)?</li>
  <li>If 1 is true, how many instances of the second set does it take to recreate the first set?</li>
  </ol>
  
  <p>So, in this case, if my second set was the list: &lt;"A", "B", "C", "D", "E", "F">, I would get TRUE and 2. </p>
  
  <p>If it was the list: &lt;"A", "B", "C">, I would get FALSE.</p>
  
  <p>If my first was &lt;"A", "A", "A", "A", "B", "B", "B", "C", "C">:</p>
  
  <ul>
  <li>Second is &lt;"A", "B", "C">: returns TRUE and 4.</li>
  <li>Second is &lt;"A", "A", "B", "C">: returns TRUE and 3.</li>
  </ul>
  
  <p>I know that this can be easily accomplished in N x M time using a nested loop. But I am looking for a (preferably Linq-based) solution that is concise and/or optimized. I played with <strong>Linq.Except</strong> but the problem with that is that it returns only the distinct elements, and is thereby useless when comparing lists of strings that contain duplicates.</p>
  
  <p>Anyone have any unique ideas?</p>