#include <bits/stdc++.h>
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define deci fixed<<showpoint<<setprecision //<<deci()<<
using namespace std;
vector<int> p,m,s,temp;
string s1[3];
int mx;
int sz1,sz2,sz3;
int main()
{ IOS
for(int i=0;i<3;i++)
cin>>s1[i];
if(s1[0]==s1[1] && s1[0]==s1[2]){
cout<<0;
return 0;}
for(int i=0;i<3;i++)
if(s1[i][1]=='p')
p.push_back(s1[i][0]);
else if(s1[i][1]=='s')
s.push_back(s1[i][0]);
else
m.push_back(s1[i][0]);
sz1=p.size();
sz2=m.size();
sz3=s.size();
mx=max(sz1,sz2);
mx=max(mx,sz3);
if(sz1>sz2 && sz1>sz3)
temp=p;
else if(sz2>sz1 && sz2>sz3)
temp=m;
else if(sz3>sz1 && sz3>sz2);
temp=s;
sort(temp.begin(),temp.end());
if(mx==3){
int arr[3];
arr[0]=s1[0][0];
arr[1]=s1[1][0];
arr[2]=s1[2][0];
sort(arr,arr+3);
if(arr[0]+1==arr[1] && arr[1]+1==arr[2]){
cout<<0<<endl;
return 0;}
else if(arr[0]+2==arr[1]||arr[1]+2==arr[2])
cout<<1<<endl;
else
cout<<2<<endl;}
else if(mx==2){
if(abs(temp[0]-temp[1])<=2){
cout<<1<<endl;
return 0;}
else {cout<<2<<endl;
return 0;}
}
else
cout<<2<<endl;
return 0;
}
CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojZGVmaW5lIElPUyBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiNkZWZpbmUgZGVjaSBmaXhlZDw8c2hvd3BvaW50PDxzZXRwcmVjaXNpb24gLy88PGRlY2koKTw8CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZlY3RvcjxpbnQ+IHAsbSxzLHRlbXA7CnN0cmluZyBzMVszXTsKaW50IG14OwppbnQgc3oxLHN6MixzejM7CmludCBtYWluKCkKeyBJT1MKZm9yKGludCBpPTA7aTwzO2krKykKY2luPj5zMVtpXTsKICAgaWYoczFbMF09PXMxWzFdICYmIHMxWzBdPT1zMVsyXSl7CiAgIGNvdXQ8PDA7CiAgIHJldHVybiAwO30KICAgZm9yKGludCBpPTA7aTwzO2krKykKICAgaWYoczFbaV1bMV09PSdwJykKICAgcC5wdXNoX2JhY2soczFbaV1bMF0pOwogICBlbHNlIGlmKHMxW2ldWzFdPT0ncycpCiAgIHMucHVzaF9iYWNrKHMxW2ldWzBdKTsKICAgZWxzZQogICBtLnB1c2hfYmFjayhzMVtpXVswXSk7CiAgIHN6MT1wLnNpemUoKTsKICAgc3oyPW0uc2l6ZSgpOwogICBzejM9cy5zaXplKCk7CiAgIG14PW1heChzejEsc3oyKTsKICAgbXg9bWF4KG14LHN6Myk7CiAgIGlmKHN6MT5zejIgJiYgc3oxPnN6MykKICAgdGVtcD1wOwogICBlbHNlIGlmKHN6Mj5zejEgJiYgc3oyPnN6MykKICAgdGVtcD1tOwogICBlbHNlIGlmKHN6Mz5zejEgJiYgc3ozPnN6Mik7CiAgIHRlbXA9czsKICAgc29ydCh0ZW1wLmJlZ2luKCksdGVtcC5lbmQoKSk7CiAgIGlmKG14PT0zKXsKICAgCWludCBhcnJbM107CglhcnJbMF09czFbMF1bMF07CglhcnJbMV09czFbMV1bMF07CglhcnJbMl09czFbMl1bMF07Cglzb3J0KGFycixhcnIrMyk7CglpZihhcnJbMF0rMT09YXJyWzFdICYmIGFyclsxXSsxPT1hcnJbMl0pewoJY291dDw8MDw8ZW5kbDsKCXJldHVybiAwO30KCWVsc2UgaWYoYXJyWzBdKzI9PWFyclsxXXx8YXJyWzFdKzI9PWFyclsyXSkKCWNvdXQ8PDE8PGVuZGw7CgllbHNlCgljb3V0PDwyPDxlbmRsO30KICAgZWxzZSBpZihteD09Mil7CiAgIAlpZihhYnModGVtcFswXS10ZW1wWzFdKTw9Mil7CiAgIAljb3V0PDwxPDxlbmRsOwogICAJcmV0dXJuIDA7fQogICAJZWxzZSB7Y291dDw8Mjw8ZW5kbDsKICAgCXJldHVybiAwO30KICAgfQogICBlbHNlCiAgIGNvdXQ8PDI8PGVuZGw7CiAgICByZXR1cm4gMDsKfQo=