#include <bits/stdc++.h>
using namespace std;

const int P=5614335;
unordered_map<unsigned int,int> f1,f2;
char m[5][5];
int ans=14;
unsigned int a[4]={50529027,202116108,808464432,3233857728};
queue<int> q;

void print(int ss)
{
	for (int i=3;i>=0;i--){
		for (int j=3;j>=0;j--){
			switch(ss&3){
				case 0:m[i][j]='R';
				break;
				case 1:m[i][j]='G';
				break;
				case 2:m[i][j]='B';
				break;
				case 3:m[i][j]='Y';
				break;
			}
			ss>>=2;
		}
	}
	for (int i=0;i<4;i++){
		for (int j=0;j<4;j++) printf("%c",m[i][j]);
		puts("");
	}
	puts("");
}

int main()
{
	for (int i=0;i<4;i++)scanf("%s",m[i]);
	f1.clear();f2.clear();
	unsigned t=0;
	int k;
	for (int i=0;i<4;i++)
	for (int j=0;j<4;j++)
	switch(m[i][j])
	{
		case 'R':t<<=2;
		break;
		case 'G':t<<=2;t|=1;
		break;
		case 'B':t<<=2;t|=2;
		break;
		case 'Y':t<<=2;t|=3;
		break;
	}
	q.push(t);
	f1[t]=1;
	while(!q.empty())
	{
		unsigned int tmp,t1,t2,t3;
		t=q.front();
		q.pop();
		k=f1[t];
		if (k>=7) continue;
		for (int i=0;i<4;i++){
			t1=(t>>(8*i))&0xFF;
			t2=t^(t1<<(8*i));
			t3=t1>>6;
			t1=((t1<<2)|t3)&0xFF;
			t1<<=8*i;
			tmp=t1^t2;
//			cout << "LLL:" << i << endl;
//			print(tmp);
			if (f1[tmp]==0){
				f1[tmp]=k+1;
				q.push(tmp);
			}
			t1=(t>>(8*i))&0xFF;
			t3=t1&3;
			t1=((t1>>2)|(t3<<6))&0xFF;
			t1<<=8*i;
			tmp=t1^t2;
//			cout << "RRR:" << i << endl;
//			print(tmp);
			if (f1[tmp]==0){
				f1[tmp]=k+1;
				q.push(tmp);
			}
		}
		for (int i=0;i<4;i++)
		{
			t1=t&a[i];
			t2=t^t1;
			t3=(t1>>24)&0xFF;
			t1<<=8;
			t1|=t3;
			tmp=t1^t2;
//			cout << "UUU:" << i << endl;
//			print(tmp);
			if (f1[tmp]==0){
				f1[tmp]=k+1;
				q.push(tmp);
			}
			t1=t&a[i];
			t3=t1&0xFF;
			t1>>=8;
			t1|=(t3<<24);
			tmp=t1^t2;
//			cout << "DDD:" << i << endl;
//			print(tmp);
			if (f1[tmp]==0){
				f1[tmp]=k+1;
				q.push(tmp);
			}
		}
	}
//	cout << f1[5614335] << endl;
	while(!q.empty()) q.pop();
	f2[P]=1;
	q.push(P);
	while(!q.empty())
	{
		unsigned int tmp,t1,t2,t3;
		t=q.front();
		q.pop();
		k=f2[t];
		if (f1[t]!=0 && f1[t] + k < ans){
			ans = f1[t] + k;
		}
		if (k>=7) continue;
		for (int i=0;i<4;i++){
			t1=(t>>(8*i))&0xFF;
			t2=t^(t1<<(8*i));
			t3=t1>>6;
			t1=((t1<<2)|t3)&0xFF;
			t1<<=8*i;
			tmp=t1^t2;
	//		cout << "LLL:" << i << endl;
	//		print(tmp);
			if (f2[tmp]==0){
				f2[tmp]=k+1;
				q.push(tmp);
			}
			t1=(t>>(8*i))&0xFF;
			t3=t1&3;
			t1=((t1>>2)|(t3<<6))&0xFF;
			t1<<=8*i;
			tmp=t1^t2;
	//		cout << "RRR:" << i << endl;
	//		print(tmp);
			if (f2[tmp]==0){
				f2[tmp]=k+1;
				q.push(tmp);
			}
		}
		for (int i=0;i<4;i++)
		{
			t1=t&a[i];
			t2=t^t1;
			t3=(t1>>24)&0xFF;
			t1<<=8;
			t1|=t3;
			tmp=t1^t2;
	//		cout << "UUU:" << i << endl;
	//		print(tmp);
			if (f2[tmp]==0){
				f2[tmp]=k+1;
				q.push(tmp);
			}
			t1=t&a[i];
			t3=t1&0xFF;
			t1>>=8;
			t1|=(t3<<24);
			tmp=t1^t2;
	//		cout << "DDD:" << i << endl;
	//		print(tmp);
			if (f2[tmp]==0){
				f2[tmp]=k+1;
				q.push(tmp);
			}
		}
	}
	cout << ans-2 << endl;
}

