from functools import lru_cache

n = int(input())
a = []
for _ in range(n):
    x = int(input())
    if not a or a[-1] != x:
        a.append(x)

v = {x: i + 1 for i, x in enumerate(set(a))}
v[0] = 0
a = [v[x] for x in a]

@lru_cache(maxsize=None)
def solve(l, r, c):
    if l >= r:
        return 0

    ans = r - l
    if a[l] == c:
        ans = min(ans, solve(l + 1, r, c))
    if a[r - 1] == c:
        ans = min(ans, solve(l, r - 1, c))
    if a[l] == a[r - 1]:
        ans = min(ans, 1 + solve(l + 1, r - 1, a[l]))

    ans = min(ans, 1 + solve(l + 1, r, a[l]))
    ans = min(ans, 1 + solve(l + 1, r, c))
    ans = min(ans, 1 + solve(l, r - 1, a[r - 1]))
    ans = min(ans, 1 + solve(l, r - 1, c))

    for m in range(l + 1, r):
        ans = min(ans, solve(l, m, c) + solve(m, r, c))

    return ans


print(solve(0, len(a), 0))
