# Count Common Words With One Occurrence

`Given two string arrays words1 and words2, return the number of strings that appear exactly once in each of the two arrays.

Input: words1 = ["leetcode","is","amazing","as","is"], words2 = ["amazing","leetcode","is"]
Output: 2
Explanation:

• "leetcode" appears exactly once in each of the two arrays. We count this string.
• "amazing" appears exactly once in each of the two arrays. We count this string.
• "is" appears in each of the two arrays, but there are 2 occurrences of it in words1. We do not count this string.
• "as" appears once in words1, but does not appear in words2. We do not count this string. Thus, there are 2 strings that appear exactly once in each of the two arrays. `
``````/**
* @param {string[]} words1
* @param {string[]} words2
* @return {number}
*/
var countWords = function (words1, words2) {
let mapW1 = new Map();
let mapW2 = new Map();

for (let i = 0; i < words1.length; i++) {
if (mapW1.has(words1[i])) {
mapW1.set(words1[i], mapW1.get(words1[i] + 1));
} else {
mapW1.set(words1[i], 1);
}
}

for (let i = 0; i < words2.length; i++) {
if (mapW2.has(words2[i])) {
mapW2.set(words2[i], mapW2.get(words2[i] + 1));
} else {
mapW2.set(words2[i], 1);
}
}
let count = 0;

for (let i = 0; i < words1.length; i++) {
console.log(words1[i]);
if (
mapW1.has(words1[i]) &&
mapW2.has(words1[i]) &&
mapW1.get(words1[i]) === 1 &&
mapW2.get(words1[i]) === 1
) {
count++;
}
}
return count;
};

console.log(
countWords(
["leetcode", "is", "amazing", "as", "is"],
["amazing", "leetcode", "is"]
)
);

`````` 