JavaScript Bitmask Solution 100%
\n/**\n * @param {string[]} req_skills\n * @param {string[][]} people\n * @return {number[]}\n */\nvar smallestSufficientTeam = function(req_skills, people) {\n
```\n/**\n * @param {string[]} req_skills\n * @param {string[][]} people\n * @return {number[]}\n */\nvar smallestSufficientTeam = function(req_skills, people) {\n    //bitmask\n    let skm = new Map();\n    for(let [ind,skill] of req_skills.entries())\n        skm.set(skill,ind);\n    let dp = new Map();\n    dp.set(0,[]);\n    for(let [ind,ar] of people.entries()){\n        let skill = 0;\n        for(let sk of ar)\n            skill=skill|(1<<skm.get(sk));\n        for(let [val,ar] of dp){\n            val=val|skill;\n            if((!dp.has(val))||(dp.get(val).length>ar.length+1))\n                dp.set(val,[...ar,ind]);\n        }\n    }\n    //console.log(dp)\n    return dp.get((1<<(req_skills.length))-1);\n};\n/*\n\nExample 2:\n\nreq_skills = ["algorithms","math","java","reactjs","csharp","aws"], \npeople = [["algorithms","math","java"],["algorithms","math","reactjs"],["java","csharp","aws"],["reactjs","csharp"],                         ["csharp","math"],["aws","java"]]\n\nalgorithm 000001\nmath      000010\njava      000100\nreactjs   001000\ncsharp    010000\naws       100000\n\nGOAL      111111\n\nPerson 0  000111\nPerson 1  001011\nPerson 2  110100\nPerson 3  011000\nPerson 4  010010\nPerson 5  100100\n\ndp\nMap {\n  0 => [],          \n  7 => [ 0 ],       \n  11 => [ 1 ],\n  15 => [ 0, 1 ],\n  52 => [ 2 ],\n  55 => [ 0, 2 ],\n  63 => [ 1, 2 ],\n  24 => [ 3 ],\n  31 => [ 0, 3 ],\n  27 => [ 1, 3 ],\n  60 => [ 2, 3 ],\n  18 => [ 4 ],\n  23 => [ 0, 4 ],\n  54 => [ 2, 4 ],\n  26 => [ 3, 4 ],\n  62 => [ 2, 3, 4 ],\n  36 => [ 5 ],\n  39 => [ 0, 5 ],\n  47 => [ 1, 5 ] }\n*/\n```
[]