```cpp
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll n,m,i,j,x,y,l,r,q,w,ii,jj,b[3][10],wz=0,mz=0,qtt=0,qt=0,a[3][10],d[3][10];
char s[101];
bool pd(ll c[3][10])
{
mz=0,qt=0,qtt=0;
for(ll qwq=0;qwq<3;qwq++)
{
for(ll qaq=1;qaq<=9;qaq++)
{
a[qwq][qaq]=c[qwq][qaq];
}
}
for(ll qwq=0;qwq<3;qwq++)
{
for(ll qaq=1;qaq<=9;qaq++)
{
if(!a[qwq][qaq]) continue;
if(a[qwq][qaq]>=3)
{
mz++;
a[qwq][qaq]-=3;
// puts("wz2");
}
if(qaq<=7)
{
while(a[qwq][qaq]>0&&a[qwq][qaq+1]>0&&a[qwq][qaq+2]>0)
{
a[qwq][qaq]--;
a[qwq][qaq+1]--;
a[qwq][qaq+2]--;
mz++;
// puts("wz1");
}
}
if(a[qwq][qaq]>=2)
{
qt++;
a[qwq][qaq]-=2;
// puts("wz3");
}
}
}
if(qt==1&&mz==4) return 1;
for(ll qwq=0;qwq<3;qwq++)
{
for(ll qaq=1;qaq<=9;qaq++)
{
if(c[qwq][qaq]>=2)
{
qtt++;
}
}
}
if(qtt==7) return 1;
return 0;
}
int main()
{
scanf("%s",s+1);
wz=0;
for(i=1;i<=16;i++)
{
if(s[i]=='m'||s[i]=='p')
{
wz++;
continue;
}
b[wz][s[i]-48]++;
}
for(i=0;i<3;i++)
{
for(j=1;j<=9;j++)
{
if(b[i][j]!=4)
{
b[i][j]++;
if(pd(b))
{
cout<<0;
return 0;
}
b[i][j]--;
}
}
}
for(i=0;i<3;i++)
{
for(j=1;j<=9;j++)
{
if(b[i][j]==4)
{
continue;
}
b[i][j]++;
for(x=0;x<3;x++)
{
for(y=1;y<=9;y++)
{
if(!b[x][y])
{
continue;
}
b[x][y]--;
for(l=0;l<=i;l++)
{
for(r=1;r<=j;r++)
{
if(b[l][r]==4)
{
continue;
}
b[l][r]++;
// printf("%lld %lld %lld %lld %lld %lld\n",i,j,x,y,l,r);
/* if(i==1&&j==6&&x==0&&y==1&&l==1&&r==4)
{
for(q=0;q<3;q++)
{
for(w=1;w<=9;w++)
{
cout<<b[q][w]<<" ";
}
puts("");
}
}*/
if(pd(b))
{
cout<<1;
return 0;
}
b[l][r]--;
}
}
b[x][y]++;
}
}
b[i][j]--;
}
}
for(i=0;i<3;i++)
{
for(j=1;j<=9;j++)
{
if(b[i][j]==4)
{
continue;
}
b[i][j]++;
for(x=0;x<3;x++)
{
for(y=1;y<=9;y++)
{
if(!b[x][y])
{
continue;
}
b[x][y]--;
for(l=0;l<3;l++)
{
for(r=1;r<=9;r++)
{
if(b[l][r]==4)
{
continue;
}
b[l][r]++;
for(q=0;q<3;q++)
{
for(w=1;w<=9;w++)
{
if(!b[q][w])
{
continue;
}
b[q][w]--;
for(ii=0;ii<3;ii++)
{
for(jj=1;jj<=9;jj++)
{
if(b[ii][jj]==4)
{
continue;
}
b[ii][jj]++;
if(pd(b))
{
cout<<2;
return 0;
}
b[ii][jj]--;
}
}
b[q][w]++;
}
}
b[l][r]--;
}
}
b[x][y]++;
}
}
b[i][j]--;
}
}
/* for(q=0;q<3;q++)
{
for(w=1;w<=9;w++)
{
cout<<b[q][w]<<" ";
}
puts("");
}*/
cout<<3;
return 0;
}
```
by _998344353_ @ 2022-05-22 17:16:55
过了Subtask1,2,过不去3
by _998344353_ @ 2022-05-22 17:17:23
建议模块,这代码可读性
by ppip @ 2022-05-22 17:40:18
借楼问题面在哪能看到
by Etinorally @ 2022-05-22 17:55:27
@[bye_wjx](/user/575994) 看不到
by ppip @ 2022-05-22 23:34:07