ソースコード
#include <bits/stdc++.h>
using namespace std;
//macro-----------------------------------------------------------------------------------------
#define rep(i,a) for(int i=0;i<a;i++)
#define revrep(i,a,b) for(int i=a;i>b;i--)
#define int long long
#define sort(arr) sort(arr.begin(), arr.end())
#define reverse(arr) reverse(arr.begin(), arr.end())
#define elif else if
typedef vector<int> vi;
typedef vector<vector<int>> vvi;
typedef pair<int, int> pi;
//constant--------------------------------------------------------------------------------------
const int inf = 100100100100000;
const int mod = 1000000007;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
//general_method--------------------------------------------------------------------------------
vector<int> cs(vector<int> arr){vector<int> ret = arr;rep(i,arr.size()){ret[i] += ret[i-1];}return ret;}
int ceil(int a, int b){if(a%b == 0) return a/b;else return a/b + 1;}
int digitlen(int i){int t = i;int count = 0;while(t){count += 1;t /= 10;}return count;}
int gcd(int a, int b){if(b== 0)return a;return gcd(b, a%b);}
//io_method-------------------------------------------------------------------------------------
int input(){int tmp;cin >> tmp;return tmp;}
void print(vi arr){
rep(i,arr.size()) cout << arr[i] << " "; cout << endl;
}
void print(int n){
cout << n << endl;
}
//main------------------------------------------------------------------------------------------
int n,m;
vi cnt(21,0);
vvi cumsum(21, vi(100001,0));
vi dp((1<<21), -1);
int retexchng(int i, int frm, int to){
if(frm > 0){
return cumsum[i][to] - cumsum[i][frm-1];
}else{
return cumsum[i][to];
}
}
int dfs(int s, int p, int chng){
if(dp[s] > -1) return dp[s];
if(s == (1<<m)-1) return chng;
int exchng = -1;
rep(i,m){
if(!(s & (1<< i))){
exchng = max(exchng, dfs(s + (1<<i), p + cnt[i], chng + retexchng(i,p, p + cnt[i]-1)));
}
}
return dp[s] = exchng;
}
signed main(){
std::ios::sync_with_stdio(false);
std::cin.tie(0);
cin >> n >> m;
rep(i,n){
int t = input()-1;
cnt[t]++;
cumsum[t][i]++;
}
rep(i,m){
for(int j = 1; j < n; j++){
cumsum[i][j] = cumsum[i][j-1] + cumsum[i][j];
}
}
print(n- dfs(0, 0, 0));
}