优化前
n = int(input())
a = []
a.extend([0] + list(map(int, input().split())))
f = [0] * (n + 1)
for i in range(1, n + 1):
f[i] = 1
s1 = str(a[i])[0]
for j in range(1, i):
s0 = str(a[j])[-1]
if s0 == s1:
f[i] = max(f[i], f[j] + 1)
ans = n
for i in range(1, n + 1):
ans = min(ans, n - f[i])
print(ans)
优化后
# 我们只要考虑每个数字开头和结尾的数字
n = int(input())
a = []
a.extend([0] + list(map(int, input().split())))
f = [0] * (n + 1)
g = [0] * (10)
for i in range(1, n + 1):
f[i] = 1
# s0存的是a[i]开头的数字
s0 = int(str(a[i])[0])
# s1存的是a[i]结尾的数字
s1 = int(str(a[i])[-1])
f[i] = max(f[i], g[s0] + 1)
g[s1] = max(g[s1], f[i])
ans = n
for i in range(1, n + 1):
ans = min(ans, n - f[i])
print(ans)