# PROBLEM LINK:

Practice

Contest: Division 1

Contest: Division 2

Contest: Division 3

Contest: Division 4

* Author:* notsoloud

*wuhudsm, satyam_343*

**Testers:***iceknight1093*

**Editorialist:**# DIFFICULTY:

TBD

# PREREQUISITES:

Frequency arrays

# PROBLEM:

Given an array A, in one move you can pick indices i and j and set A_j to b equal to A_i.

Find the minimum number of moves so that all elements of A become equal.

# EXPLANATION:

Suppose we perform some operations and make every element equal to x in the end.

Then,

- x must exist in the original array.
- If A_i was initially equal to x, then no operation is required on this index.
- Otherwise, we need exactly one operation to make A_i equal x.

In particular, this means we need exactly N - \text{freq}[x] operations to make everything equal to x, where \text{freq}[x] is the number of occurrences of x in A.

Our aim is to minimize this, so it’s clearly optimal to choose the largest possible value of \text{freq}[x].

This gives us a simple solution: compute the frequency array of A, and let M be its maximum value.

Then, the answer is N - M.

# TIME COMPLEXITY

\mathcal{O}(N) per test case.

# CODE:

## Editorialist's code (Python)

```
for _ in range(int(input())):
n = int(input())
a = list(map(int, input().split()))
freq = {}
for x in a:
if x in freq: freq[x] += 1
else: freq[x] = 1
print(n - max(freq.values()))
```