title: Count Words Appear Exactly Two Times Array Words
signature: count_words_appear_exactly_two_times_array_words <- function(stri, n) {
test_code: 
  
  
  # SOLUTION CODE
  # ============================================
  PLACEHOLDER_CODE_BODY
  
  # TESTING CODE 
  # ============================================
  validate_solution <- function(actual, expected) {
      toString(actual)==toString(expected)
  }
  
  driver <- function(stri, n, expected){
      if (validate_solution(PLACEHOLDER_FN_NAME(stri, n), expected)){
          "PASSED"
      } else{
          "FAILED"
      }
  }
  
  main <- function() {
      cat(sprintf("TEST-0...%s\n",driver(
          list("hate", "love", "peace", "love", "peace", "hate", "love", "peace", "love", "peace"), 10L, 
          1L
      )))
  
      cat(sprintf("TEST-1...%s\n",driver(
          list("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"), 32L, 
          3L
      )))
  
      cat(sprintf("TEST-2...%s\n",driver(
          list("001000100000", "1010", "01011", "11", "011", "1010"), 6L, 
          1L
      )))
  
      cat(sprintf("TEST-3...%s\n",driver(
          list("Om", "Om", "Shankar", "Tripathi", "Tom", "Jerry", "Jerry"), 7L, 
          2L
      )))
  
      cat(sprintf("TEST-4...%s\n",driver(
          list("2", "644", "2", "42484637089", "81578664", "0778"), 6L, 
          1L
      )))
  
      cat(sprintf("TEST-5...%s\n",driver(
          list("001000101", "011010", "1", "101010011", "011010", "01", "10111000101", "0", "1", "00101101", "0", "0"), 12L, 
          2L
      )))
  
      cat(sprintf("TEST-6...%s\n",driver(
          list("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 "), 43L, 
          1L
      )))
  
      cat(sprintf("TEST-7...%s\n",driver(
          list("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"), 20L, 
          0L
      )))
  
      cat(sprintf("TEST-8...%s\n",driver(
          list("00", "0", "00", "0101111010100", "110"), 4L, 
          1L
      )))
  
      cat(sprintf("TEST-9...%s\n",driver(
          list("g", "h", "ok", "h", "ok", "sqozuC", "ut", "ZwRcG", "ok", "MR", "jHrWyy", "qaJlrokgRHuZH", "LjPNzDUKszYmCq", "g", "ZGjLfMnyAGL", "kEZoSxOMEWSFpw", "IFtqNaDVnG", "iJoJXl", "vjrQMyWor", "FTEHZqbHGlmHph", "QeSdzm", "nPostKHkigyJt", "mOSekk"), 15L, 
          2L
      )))
  
  }
  
  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;
  }