#include<iostream>
#include<cstdio>
using namespace std;
struct node
{
node* row[4];
char colar;
node(char c)
{
row[1]=row[2]=row[3]=row[4]=NULL;
colar=c;//
}
};
node* newnode(char c)
{
return new node(c);
}
node* read()
{
char c;
cin>>c;
node* head=newnode(c);
if(c=='e'||c=='f')return head;
for(int i=0;i<4;i++)
{
head->row[i]=read();
}
return head;
}
int sum;
void dfs(node* head,int value)
{
if(head->colar=='f')
{
sum+=value;return;
}
if(head->colar=='e')return;
for(int i=0;i<4;i++)
{
dfs(head->row[i],value/4);
}
}
void pr(node* head)
{
cout<<head->colar;
if(head->colar=='f'||head->colar=='e')
{
return;
}
for(int i=0;i<4;i++)
{
pr(head->row[i]);
}
}
node* add(node* head1,node* head2)
{
node *head3;
if(head1->colar=='f')
{
head3=head1;return head3;
}
if(head2->colar=='f')
{
head3=head2;return head3;
}
if(head1->colar=='p'&&head2->colar=='e')
{
head3=head1;return head3;
}
if(head2->colar=='p'&&head1->colar=='e')
{
head3=head2;return head3;
}
if(head1->colar=='e'&&head2->colar=='e')
{
head3=head2;return head3;
}
head3=newnode('p');
for(int i=0;i<4;i++)
{
head3->row[i]=add(head1->row[i],head2->row[i]);
}
return head3;
}
int main()
{
//freopen("input.txt","r",stdin);
int T;
scanf("%d",&T);
while(T--)
{
sum=0;
node *head1=read();
node *head2=read();
dfs(add(head1,head2),1024);
cout<<"There are "<<sum<<" black pixels."<<endl;
}
return 0;
}
#include<cstdio>
using namespace std;
struct node
{
node* row[4];
char colar;
node(char c)
{
row[1]=row[2]=row[3]=row[4]=NULL;
colar=c;//
}
};
node* newnode(char c)
{
return new node(c);
}
node* read()
{
char c;
cin>>c;
node* head=newnode(c);
if(c=='e'||c=='f')return head;
for(int i=0;i<4;i++)
{
head->row[i]=read();
}
return head;
}
int sum;
void dfs(node* head,int value)
{
if(head->colar=='f')
{
sum+=value;return;
}
if(head->colar=='e')return;
for(int i=0;i<4;i++)
{
dfs(head->row[i],value/4);
}
}
void pr(node* head)
{
cout<<head->colar;
if(head->colar=='f'||head->colar=='e')
{
return;
}
for(int i=0;i<4;i++)
{
pr(head->row[i]);
}
}
node* add(node* head1,node* head2)
{
node *head3;
if(head1->colar=='f')
{
head3=head1;return head3;
}
if(head2->colar=='f')
{
head3=head2;return head3;
}
if(head1->colar=='p'&&head2->colar=='e')
{
head3=head1;return head3;
}
if(head2->colar=='p'&&head1->colar=='e')
{
head3=head2;return head3;
}
if(head1->colar=='e'&&head2->colar=='e')
{
head3=head2;return head3;
}
head3=newnode('p');
for(int i=0;i<4;i++)
{
head3->row[i]=add(head1->row[i],head2->row[i]);
}
return head3;
}
int main()
{
//freopen("input.txt","r",stdin);
int T;
scanf("%d",&T);
while(T--)
{
sum=0;
node *head1=read();
node *head2=read();
dfs(add(head1,head2),1024);
cout<<"There are "<<sum<<" black pixels."<<endl;
}
return 0;
}