title: Count Words Appear Exactly Two Times Array Words
signature: function count_words_appear_exactly_two_times_array_words(stri, n)
test_code: using Printf
  
  # SOLUTION CODE
  # ============================================
  PLACEHOLDER_CODE_BODY
  
  # TESTING CODE 
  # ============================================
  function validate_solution(actual, expected)
      return actual == expected
  end
  
  function driver(stri, n, expected)
      try
  
          if validate_solution(PLACEHOLDER_FN_NAME(stri, n), expected)
              return "PASSED";
          end
          return "FAILED";
      catch exception_obj
          return string(Base.typename(typeof(exception_obj)).wrapper);
      end
  end
  
  function main()
      
      result = driver(["hate", "love", "peace", "love", "peace", "hate", "love", "peace", "love", "peace"], 10, 1);
      @printf("TEST-0...%s\n",result);
      
      result = driver(["16", "946613197072", "532052", "42780833", "511552", "1241934", "4", "3444540", "47487223670074", "23753", "14158", "4", "95420017116714", "16", "0845", "689000748", "976403809728", "8922", "487784120896", "329", "611", "59101", "611", "2131059721", "53952148295020", "445948587", "3905249775372", "4683180907", "7169093", "01413852276627", "63", "5864", "40862536595", "2280304422294", "930028582", "05", "33447"], 32, 3);
      @printf("TEST-1...%s\n",result);
      
      result = driver(["001000100000", "1010", "01011", "11", "011", "1010"], 6, 1);
      @printf("TEST-2...%s\n",result);
      
      result = driver(["Om", "Om", "Shankar", "Tripathi", "Tom", "Jerry", "Jerry"], 7, 2);
      @printf("TEST-3...%s\n",result);
      
      result = driver(["2", "644", "2", "42484637089", "81578664", "0778"], 6, 1);
      @printf("TEST-4...%s\n",result);
      
      result = driver(["001000101", "011010", "1", "101010011", "011010", "01", "10111000101", "0", "1", "00101101", "0", "0"], 12, 2);
      @printf("TEST-5...%s\n",result);
      
      result = driver(["kl", "p sH", "PwCPMPu", "tQoIgPpk", "wtsNP WjS", "kl ", "TXsFWgU", "kl", "AD", "NjjTyFGwNWZcB", "jpFQslbGbDI", "cEpGAgvpk", "EMaDkMOm", "YZuNZgfwDIjG", "k", "hJx jHmGpQYwQP", "CIETe", "RH", "Pj", "h", "DInR", "AEsqOvliQtz", "NwzHTALTt LS", "LwLR", "WvDCzlQF", "soJb", "WktoldCbWyTO", "pIdRJxY", "BmpWxjOwTXkjjL", "zmtCiQ", "g", "yBmDW", "QhaBZrQnOJaAJ", "u", "MGTwCKve", "UxYQrONag", "xsGSz", "dqNPTT", "U W", "ygJKvCEKDClby", "M", "yXJQHxjyDQDLkT", "oJmaREOEk YA", "zUwiwhSMdiC", "jYgZEktcdgLD", "fwyTAAW", "GENttdzeGY "], 43, 1);
      @printf("TEST-6...%s\n",result);
      
      result = driver(["938", "074209", "0949093096", "218622476", "71692175", "0714", "81217924991", "74016430795374", "52213147", "338", "939", "798161500954", "90528060774015", "68715", "75810", "43450", "8017", "0193164", "5945740", "212", "4589289", "2912211026", "0", "49", "8230114", "0733435391403", "5429", "10070"], 20, 0);
      @printf("TEST-7...%s\n",result);
      
      result = driver(["00", "0", "00", "0101111010100", "110"], 4, 1);
      @printf("TEST-8...%s\n",result);
      
      result = driver(["g", "h", "ok", "h", "ok", "sqozuC", "ut", "ZwRcG", "ok", "MR", "jHrWyy", "qaJlrokgRHuZH", "LjPNzDUKszYmCq", "g", "ZGjLfMnyAGL", "kEZoSxOMEWSFpw", "IFtqNaDVnG", "iJoJXl", "vjrQMyWor", "FTEHZqbHGlmHph", "QeSdzm", "nPostKHkigyJt", "mOSekk"], 15, 2);
      @printf("TEST-9...%s\n",result);
      
  end
  
  main()
source_py: def count_words_appear_exactly_two_times_array_words(stri, n):
      m = dict()
      for i in range(n):
          m[stri[i]] = (m.get(stri[i], 0) + 1)
      res = 0
      for i in m.values():
          if (i == 2):
              res += 1
      return res
source_cpp: int count_words_appear_exactly_two_times_array_words(vector<string> str, int n) {
    unordered_map < string, int > m;
    for ( int i = 0;
    i < n;
    i ++ ) m [ str [ i ] ] += 1;
    int res = 0;
    for ( auto it = m . begin ( );
    it != m . end ( );
    it ++ ) if ( ( it -> second == 2 ) ) res ++;
    return res;
  }