//codeforces 2057B
#include <iostream>
#include <utility>
#include <set>
#include <map>
#include <numeric>
struct cmp{
bool operator()(const std::pair<int,int>& a,const std::pair<int,int>& b) const{
return a.second<b.second || (a.second==b.second && a.first<b.first);
}
};
void solve(){
int n,k;
std::cin>>n>>k;
std::multiset<int> counts;
{
//统计频率
std::map<int,int> m;//num freq
for(int i = 0;i<n;i++){
int x;
std::cin>>x;
m[x]++;
}
//将频率放入set
for(auto i:m){
counts.insert(i.second);
}
}
int maxCount = *counts.rbegin();
while(k>0 && counts.size()>1){
if(*counts.begin()<=k){
maxCount+=*counts.begin();
k-=*counts.begin();
counts.erase(counts.begin());
}else{
k=0;
}
}
int ans = counts.size();
std::cout<<ans<<std::endl;
}
int main(){
int t;
std::cin >> t;
while(t--){
solve();
}
}