#include<bits/stdc++.h>
using namespace std;
const int maxn=200005;
int n,m;
string st1,st2;
struct uu
{
int x,y;
};
struct ee
{
long long l,r,ans1,ans2,ans3,ans4;
}d[maxn*5];
uu get(int x)
{
if(x<=n)return {1,x};
else return {2,x-n};
}
void build(int x,int l,int r)
{
d[x].l=l;
d[x].r=r;
if(l==r)
{
if(st1[l]=='.')d[x].ans1=0;
else d[x].ans1=998244353;
if(st2[l]=='.')d[x].ans2=0;
else d[x].ans2=998244353;
if(st1[l]=='.'&&st2[l]=='.')d[x].ans3=d[x].ans4=1;
else d[x].ans3=d[x].ans4=998244353;
}
else
{
build(x*2,l,(l+r)/2);
build(x*2+1,(l+r)/2+1,r);
d[x].ans1=min(d[x*2].ans1+d[x*2+1].ans1,d[x*2].ans3+d[x*2+1].ans4)+1;
d[x].ans2=min(d[x*2].ans2+d[x*2+1].ans2,d[x*2].ans4+d[x*2+1].ans3)+1;
d[x].ans3=min(d[x*2].ans1+d[x*2+1].ans3,d[x*2].ans3+d[x*2+1].ans2)+1;
d[x].ans4=min(d[x*2].ans4+d[x*2+1].ans1,d[x*2].ans2+d[x*2+1].ans4)+1;
}
}
long long solve(int x,int l,int r,int o)
{
if(l==d[x].l&&r==d[x].r)
{
if(o==1)return d[x].ans1;
else if(o==2)return d[x].ans2;
else if(o==3)return d[x].ans3;
else return d[x].ans4;
}
long long ans=0;
if(r<=d[x*2].r)
{
ans=solve(x*2,l,r,o);
}
else if(l>=d[x*2+1].l)
{
ans=solve(x*2+1,l,r,o);
}
else
{
if(o==1)
{
ans=min(solve(x*2,l,d[x*2].r,1)+solve(x*2+1,d[x*2+1].l,r,1),solve(x*2,l,d[x*2].r,3)+solve(x*2+1,d[x*2+1].l,r,4))+1;
}
else if(o==2)
{
ans=min(solve(x*2,l,d[x*2].r,2)+solve(x*2+1,d[x*2+1].l,r,2),solve(x*2,l,d[x*2].r,4)+solve(x*2+1,d[x*2+1].l,r,3))+1;
}
else if(o==3)
{
ans=min(solve(x*2,l,d[x*2].r,1)+solve(x*2+1,d[x*2+1].l,r,3),solve(x*2,l,d[x*2].r,3)+solve(x*2+1,d[x*2+1].l,r,2))+1;
}
else
{
ans=min(solve(x*2,l,d[x*2].r,2)+solve(x*2+1,d[x*2+1].l,r,4),solve(x*2,l,d[x*2].r,4)+solve(x*2+1,d[x*2+1].l,r,1))+1;
}
}
return ans;
}
int main()
{
cin>>n>>m;
scanf("\n");
getline(cin,st1);
getline(cin,st2);
build(1,0,n-1);
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
uu u,v;
u=get(x);
v=get(y);
long long ans=0;
u.x--;
u.y--;
v.x--;
v.y--;
if(u.y>v.y)swap(u,v);
if(u.x==0&&v.x==0)ans=solve(1,min(u.y,v.y),max(u.y,v.y),1);
else if(u.x==0&&v.x==1)ans=solve(1,min(u.y,v.y),max(u.y,v.y),3);
else if(u.x==1&&v.x==1)ans=solve(1,min(u.y,v.y),max(u.y,v.y),2);
else ans=solve(1,min(u.y,v.y),max(u.y,v.y),4);
if(ans<=998244352)printf("%lld\n",ans);
else puts("-1");
}
return 0;
}