#P1527E. Partition Game

    ID: 2169 Type: RemoteJudge 3000ms 256MiB Tried: 0 Accepted: 0 Difficulty: 9 Uploaded By: Tags>binary searchdata structuresdivide and conquerdp*2500

Partition Game

Description

You are given an array aa of nn integers. Define the cost of some array tt as follows:

cost(t)=xset(t)last(x)first(x),cost(t) = \sum_{x \in set(t) } last(x) - first(x),

where set(t)set(t) is the set of all values in tt without repetitions, first(x)first(x), and last(x)last(x) are the indices of the first and last occurrence of xx in tt, respectively. In other words, we compute the distance between the first and last occurrences for each distinct element and sum them up.

You need to split the array aa into kk consecutive segments such that each element of aa belongs to exactly one segment and the sum of the cost of individual segments is minimum.

The first line contains two integers nn, kk (1n350001 \le n \le 35\,000, 1kmin(n,100)1 \le k \le \min(n,100)).

The second line contains nn integers a1,a2,,ana_1, a_2, \ldots, a_n (1ain1 \le a_i \le n).

Output the minimum sum of the cost of individual segments.

Input

The first line contains two integers nn, kk (1n350001 \le n \le 35\,000, 1kmin(n,100)1 \le k \le \min(n,100)).

The second line contains nn integers a1,a2,,ana_1, a_2, \ldots, a_n (1ain1 \le a_i \le n).

Output

Output the minimum sum of the cost of individual segments.

Sample Input 1

7 2
1 6 6 4 6 6 6

Sample Output 1

3

Sample Input 2

7 4
5 5 5 5 2 3 3

Sample Output 2

1

Note

In the first example, we can divide the array into [1,6,6,4][1,6,6,4] and [6,6,6][6,6,6]. Cost of [1,6,6,4][1,6,6,4] will be (11)+(32)+(44)=1(1-1) + (3 - 2) + (4-4) = 1 and cost of [6,6,6][6,6,6] will be 31=23-1 = 2. Total cost would be 1+2=31 + 2 = 3.

In the second example, divide the array into [5,5],[5],[5,2,3][5,5],[5],[5,2,3] and [3][3]. Total Cost would be 1+0+0+0=11 + 0 + 0 + 0 = 1.