#pragma GCC optimize("Ofast") #pragma GCC target("avx2") char*mmap(); #define RD(v) int v=0;{int c;while(c=*rp++-48,c>=0)v=v*10+c;} int dpbuf[20],*dp1=dpbuf,*dp2=dpbuf+10; int main() { char*rp=mmap(0l,11*200001,1,2,0,0ll); RD(n); for(int i=1;i<10;++i){ dp1[i]=-n; } while(n--){ while(*rp++>=48); int a=rp[-2]-48; for(int i=0;i<10;++i){ dp2[a]=dp1[a]>dp1[i]?dp1[a]:dp1[i]+1; if(++a==10) a=0; } int*tmp=dp1; dp1=dp2; dp2=tmp; } printf("%d",*dp1); }