#include<bits/stdc++.h>
#include<unordered_map>
using namespace std;
unordered_map<long long, int> tb;
int cov[29][2]={0};
int a[30],b[30],trs[120],cnt[30],p2[30];
int dfs(int cdt, int b[], int tot){
	int res=tot;
	long long p=((long long)cdt<<(long long)5)|b[0];
	if (tb.find(p)!=tb.end()) {
		return 100;
	}
	tb[p]=1;
	for (int i=1,ti=1;i<=28;i++,ti<<=1)if (cdt&ti){
		for (int j=i+1,tj=ti<<1;j<=28;j++,tj<<=1)if (cdt&tj){
			if (a[i]+a[j]==13){
				//remove(i,j);
				cdt^=ti^tj;
				if (cov[i][0]&&!(--cnt[cov[i][0]])) cdt|=p2[cov[i][0]];
				if (cov[i][1]&&!(--cnt[cov[i][1]])) cdt|=p2[cov[i][1]];
				if (cov[j][0]&&!(--cnt[cov[j][0]])) cdt|=p2[cov[j][0]];
				if (cov[j][1]&&!(--cnt[cov[j][1]])) cdt|=p2[cov[j][1]];
				res=min(res,dfs(cdt,b,tot-2));
				//putback
				if (cov[i][0]) cdt^=cdt&p2[cov[i][0]],cnt[cov[i][0]]++;
				if (cov[i][1]) cdt^=cdt&p2[cov[i][1]],cnt[cov[i][1]]++;
				if (cov[j][0]) cdt^=cdt&p2[cov[j][0]],cnt[cov[j][0]]++;
				if (cov[j][1]) cdt^=cdt&p2[cov[j][1]],cnt[cov[j][1]]++;
				cdt^=ti^tj;
			}
		}
		if (a[i]==13){
			cdt^=ti;
			if (cov[i][0]&&!(--cnt[cov[i][0]])) cdt|=p2[cov[i][0]];
			if (cov[i][1]&&!(--cnt[cov[i][1]])) cdt|=p2[cov[i][1]];
			res=min(res,dfs(cdt,b,tot-1));
			cdt^=ti;
			if (cov[i][0]) cdt^=cdt&p2[cov[i][0]],cnt[cov[i][0]]++;
			if (cov[i][1]) cdt^=cdt&p2[cov[i][1]],cnt[cov[i][1]]++;
		}
	}
	if (b[0]>0){
		for (int i=1,ti=1;i<=28;i++,ti<<=1){
			if ((cdt&ti)&&a[i]+b[b[0]]==13){
				//remove(c[i],b[b[0]]);
				cdt^=ti;
				if (cov[i][0]&&!(--cnt[cov[i][0]])) cdt|=p2[cov[i][0]];
				if (cov[i][1]&&!(--cnt[cov[i][1]])) cdt|=p2[cov[i][1]];
				b[0]--;
				res=min(res,dfs(cdt,b,tot-1));
				cdt^=ti;
				//putback(c[i],b[b[0]]);
				b[0]++;
				if (cov[i][0]) cdt^=cdt&p2[cov[i][0]],cnt[cov[i][0]]++;
				if (cov[i][1]) cdt^=cdt&p2[cov[i][1]],cnt[cov[i][1]]++;
			}
		}
		b[0]--;
		res=min(res,dfs(cdt,b,tot));
		b[0]++;
	}
	return res;
}
int main(void){
	char s[30];
	for (int i='2';i<='9';i++) trs[i]=i-'0';
	trs['A']=1;trs['J']=11;trs['Q']=12;trs['K']=13;
	trs['T']=10;
	scanf("%s",s);
	int temp=0;
	int pos[30][30];
	for (int i=1;i<=7;i++){
		for (int j=1;j<=i;j++){
			pos[i][j]=++temp;
			int tot=0;
			if (j!=i)cov[temp][tot++]=pos[i-1][j],cnt[pos[i-1][j]]++;
			if (j!=1)cov[temp][tot]=pos[i-1][j-1],cnt[pos[i-1][j-1]]++;
			a[temp]=trs[s[temp-1]];
		}
	}
	scanf("%s",s);
	b[0]=24;
	for (int i=1;i<=24;i++){
		b[i]=trs[s[24-i]];
	}
	int cdt=0;
	for (int i=1,t=1<<21;i<=7;cdt|=t,i++,t<<=1);
	for (int i=1;i<=28;i++){
		p2[i]=1<<i-1;
	}
	tb.clear();
	printf("%d",dfs(cdt,b,28));
}