#include<bits/stdc++.h>
using namespace std;
#define int long long
#define re register
const int N=5e5+100;
const int inf=1e18;
int n,m,cnt[N],dp[N],a[N],sum;
inline void work(int l,int r,int L,int R){
if(l>r) return;
sum=0;
int mid=(l+r)/2,pos,res=inf;
int lmid=L,rmid=min(R,mid);
for(re int i=mid;i>rmid;i--) sum+=cnt[a[i]],cnt[a[i]]++;
for(re int i=rmid;i>=lmid;i--){
sum+=cnt[a[i]],cnt[a[i]]++;
if(dp[i-1]+sum<res) res=dp[i-1]+sum,pos=i;
}
for(re int i=mid;i>=lmid;i--) cnt[a[i]]=0;
work(mid+1,r,pos,R),dp[mid]=res,work(l,mid-1,L,pos);
return;
}
signed main(){
cin>>n>>m;
for(re int i=1;i<=n;i++) scanf("%lld",&a[i]);
for(re int i=1;i<=n;i++) dp[i]=inf;
for(re int i=1;i<=m;i++) work(1,n,1,n);
cout<<dp[n];
return 0;
}