DFS+Map brute force solution 
IntuitionApproachComplexity
Time complexity:

Space complexity:
Code
# Intuition
<!-- Describe your first thoughts on how to solve this problem. -->

# Approach
<!-- Describe your approach to solving the problem. -->

# Complexity
- Time complexity:
<!-- Add your time complexity here, e.g. $$O(n)$$ -->

- Space complexity:
<!-- Add your space complexity here, e.g. $$O(n)$$ -->

# Code
```cpp []
class Solution {
public:
    
    int intersect(vector<int>& vtr1, vector<int>& vtr2) {
        unordered_set<int> set1(vtr1.begin(), vtr1.end());
        int count = 0;
        
        for (int num : vtr2) {
            if (set1.count(num)) {
                count++; 
                set1.erase(num);
            }
        }
        return count;
    }

  
    void dfs(int node, map<int, vector<int>>& m, vector<int>& vis) {
        vis[node] = 1;
        for (auto it : m[node]) {
            if (!vis[it]) {
                dfs(it, m, vis);
            }
        }
    }

    int numberOfComponents(vector<vector<int>>& properties, int k) {
        map<int, vector<int>> m;
        int n = properties.size();
        
        
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) { 
                int val = intersect(properties[i], properties[j]);
                if (val >= k) {
                    m[i].push_back(j);
                    m[j].push_back(i);
                }
            }
        }

        int cnt = 0;
        vector<int> vis(n, 0);

       
        for (int i = 0; i < n; i++) {
            if (!vis[i]) {
                cnt++;
                dfs(i, m, vis);
            }
        }
        return cnt;
    }
};

```
['C++']