#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
int n;
string s, S, t, T;
void solve()
{
	cin >> n >> s >> S >> t >> T;
	s = ' ' + s;
	S = ' ' + S;
	t = ' ' + t;
	T = ' ' + T;
	vector<pair<pii, pii> > ps, pS;
	for(int i=1;i<=n;i++)
	{
		if(t[i] == '1' && (i == 1 || t[i - 1] == '0'))
		{
			ps.push_back(make_pair(make_pair(i, 0), make_pair(0, 0)));
		}
		if(t[i] == '0' && i > 1 && t[i - 1] == '1')
		{
			ps.back().first.second = i - 1;
		}
		if(T[i] == '1' && (i == 1 || T[i - 1] == '0'))
		{
			pS.push_back(make_pair(make_pair(i, 0), make_pair(0, 0)));
		}
		if(T[i] == '0' && i > 1 && T[i - 1] == '1')
		{
			pS.back().first.second = i - 1;
		}
	}
	if(!ps.back().first.second)
	{
		ps.back().first.second = n;
	}
	if(!pS.back().first.second)
	{
		pS.back().first.second = n;
	}
	for(auto& i : ps)
	{
		for(int j=i.first.first;j<=i.first.second;j++)
		{
			if(s[j] == '0')
			{
				i.second.first++;
			}
			else
			{
				i.second.second++;
			}
		}
	}
	for(auto& i : pS)
	{
		for(int j=i.first.first;j<=i.first.second;j++)
		{
			if(S[j] == '0')
			{
				i.second.first++;
			}
			else
			{
				i.second.second++;
			}
		}
	}
	int cur1 = -1, cur2 = -1, ans = 0;
	for(int i=1;i<=n;i++)
	{
		if(cur1 + 1 < ps.size() && i == ps[cur1 + 1].first.first)
		{
			cur1++;
		}
		if(cur2 + 1 < pS.size() && i == pS[cur2 + 1].first.first)
		{
			cur2++;
		}
		if(t[i] == '0')
		{
			if(T[i] == '0')
			{
				ans += (s[i] == S[i]);
			}
			else
			{
				if(s[i] == '0')
				{
					if(pS[cur2].second.first)
					{
						ans++;
						pS[cur2].second.first--;
					}
					else
					{
						pS[cur2].second.second--;
					}
				}
				else
				{
					if(pS[cur2].second.second)
					{
						ans++;
						pS[cur2].second.second--;
					}
					else
					{
						pS[cur2].second.first--;
					}
				}
			}
		}
		else
		{
			if(T[i] == '0')
			{
				if(S[i] == '0')
				{
					if(ps[cur1].second.first)
					{
						ans++;
						ps[cur1].second.first--;
					}
					else
					{
						ps[cur1].second.second--;
					}
				}
				else
				{
					if(ps[cur1].second.second)
					{
						ans++;
						ps[cur1].second.second--;
					}
					else
					{
						ps[cur1].second.first--;
					}
				}
			}
			else
			{
				if(ps[cur1].second.first && pS[cur2].second.first)
				{
					ps[cur1].second.first--;
					pS[cur2].second.first--;
					ans++;
				}
				else
				{
					if(ps[cur1].second.second && pS[cur2].second.second)
					{
						ps[cur1].second.second--;
						pS[cur2].second.second--;
						ans++;
					}
					else
					{
						if(ps[cur1].second.first)
						{
							ps[cur1].second.first--;
							pS[cur2].second.second--;
						}
						else
						{
							ps[cur1].second.second--;
							pS[cur2].second.first--;
						}
					}
				}
			}
		}
	}
	cout << ans << endl;
}
int main()
{
	freopen("edit.in", "r", stdin);
	freopen("edit.out", "w", stdout);
	int tt;
	cin >> tt;
	while(tt--)
	{
		solve();
	}
	return 0;
}
