#include <bits/stdc++.h>
#define ll long long
#define el cout << '\n'
#define ii pair<ll, ll>
#define fi first
#define se second
using namespace std;
const int maxn = 1e5;
const int maxk = 20;
const ll INF = 1e18;
int n, k, l = 1, r = 0;
ll a[maxn + 10], dp[maxn + 10][maxk + 10], cnt[maxn + 10], quantity = 0;
void add(int p)
{
quantity += cnt[a[p]];
cnt[a[p]]++;
}
void del(int p)
{
cnt[a[p]]--;
quantity -= cnt[a[p]];
}
ll cost(int ql, int qr)
{
while (l < ql) del(l++);
while (l > ql) add(--l);
while (r < qr) add(++r);
while (r > qr) del(r--);
return quantity;
}
void dnc(int j, int l, int r, int optl, int optr)
{
if (l > r) return ;
int m = l + r >> 1;
ii best = {INF, -1};
for (int z = optl; z <= min(m, optr); z++)
best = min(best, {dp[z - 1][j - 1] + cost(z, m), z});
dp[m][j] = best.fi;
dnc(j, l, m - 1, optl, best.se);
dnc(j, m + 1, r, best.se, optr);
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen("YET.INP", "r"))
{
freopen("YET.INP", "r", stdin);
freopen("YET.OUT", "w", stdout);
}
cin >> n >> k;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 0; i <= n; i++)
for (int j = 0; j <= k; j++)
dp[i][j] = INF;
dp[0][0] = 0;
// for (int j = 1; j <= k; j++)
// for (int i = 1; i <= n; i++)
// for (int z = 1; z <= i; z++)
// dp[i][j] = min(dp[i][j], dp[z - 1][j - 1] + cost(z, i));
//
for (int j = 1; j <= k; j++)
dnc(j, 1, n, 1, n);
// for (int j = 1; j <= k; j++)
// {
// for (int i = 1; i <= n; i++)
// cout << dp[i][j] << ' ';
// el;
// }
cout << dp[n][k];
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGVsIGNvdXQgPDwgJ1xuJwojZGVmaW5lIGlpIHBhaXI8bGwsIGxsPgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IG1heG4gPSAxZTU7CmNvbnN0IGludCBtYXhrID0gMjA7CmNvbnN0IGxsIElORiA9IDFlMTg7CgppbnQgbiwgaywgbCA9IDEsIHIgPSAwOwpsbCBhW21heG4gKyAxMF0sIGRwW21heG4gKyAxMF1bbWF4ayArIDEwXSwgY250W21heG4gKyAxMF0sIHF1YW50aXR5ID0gMDsKCnZvaWQgYWRkKGludCBwKQp7CiAgICBxdWFudGl0eSArPSBjbnRbYVtwXV07CiAgICBjbnRbYVtwXV0rKzsKfQp2b2lkIGRlbChpbnQgcCkKewogICAgY250W2FbcF1dLS07CiAgICBxdWFudGl0eSAtPSBjbnRbYVtwXV07Cn0KbGwgY29zdChpbnQgcWwsIGludCBxcikKewogICAgd2hpbGUgKGwgPCBxbCkgZGVsKGwrKyk7CiAgICB3aGlsZSAobCA+IHFsKSBhZGQoLS1sKTsKICAgIHdoaWxlIChyIDwgcXIpIGFkZCgrK3IpOwogICAgd2hpbGUgKHIgPiBxcikgZGVsKHItLSk7CiAgICByZXR1cm4gcXVhbnRpdHk7Cn0Kdm9pZCBkbmMoaW50IGosIGludCBsLCBpbnQgciwgaW50IG9wdGwsIGludCBvcHRyKQp7CiAgICBpZiAobCA+IHIpIHJldHVybiA7CiAgICBpbnQgbSA9IGwgKyByID4+IDE7CiAgICBpaSBiZXN0ID0ge0lORiwgLTF9OwoKICAgIGZvciAoaW50IHogPSBvcHRsOyB6IDw9IG1pbihtLCBvcHRyKTsgeisrKQogICAgICAgIGJlc3QgPSBtaW4oYmVzdCwge2RwW3ogLSAxXVtqIC0gMV0gKyBjb3N0KHosIG0pLCB6fSk7CgogICAgZHBbbV1bal0gPSBiZXN0LmZpOwogICAgZG5jKGosIGwsIG0gLSAxLCBvcHRsLCBiZXN0LnNlKTsKICAgIGRuYyhqLCBtICsgMSwgciwgYmVzdC5zZSwgb3B0cik7Cn0KCmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBpZiAoZm9wZW4oIllFVC5JTlAiLCAiciIpKQogICAgewogICAgICAgIGZyZW9wZW4oIllFVC5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJZRVQuT1VUIiwgInciLCBzdGRvdXQpOwogICAgfQoKICAgIGNpbiA+PiBuID4+IGs7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgY2luID4+IGFbaV07CiAgICBmb3IgKGludCBpID0gMDsgaSA8PSBuOyBpKyspCiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPD0gazsgaisrKQogICAgICAgICAgICBkcFtpXVtqXSA9IElORjsKICAgIGRwWzBdWzBdID0gMDsKLy8gICAgZm9yIChpbnQgaiA9IDE7IGogPD0gazsgaisrKQovLyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQovLyAgICAgICAgICAgIGZvciAoaW50IHogPSAxOyB6IDw9IGk7IHorKykKLy8gICAgICAgICAgICAgICAgZHBbaV1bal0gPSBtaW4oZHBbaV1bal0sIGRwW3ogLSAxXVtqIC0gMV0gKyBjb3N0KHosIGkpKTsKLy8KICAgIGZvciAoaW50IGogPSAxOyBqIDw9IGs7IGorKykKICAgICAgICBkbmMoaiwgMSwgbiwgMSwgbik7Ci8vICAgIGZvciAoaW50IGogPSAxOyBqIDw9IGs7IGorKykKLy8gICAgewovLyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQovLyAgICAgICAgICAgIGNvdXQgPDwgZHBbaV1bal0gPDwgJyAnOwovLyAgICAgICAgZWw7Ci8vICAgIH0KICAgIGNvdXQgPDwgZHBbbl1ba107Cn0K