#include <bits/stdc++.h>
using namespace std;
int rotiraj(char a, char b){
if(a=='X')return 100000;
int posa,posb;
if(a=='E')posa=0;
else if(a=='N')posa=1;
else if(a=='W')posa=2;
else if(a=='S')posa=3;
if(b=='E')posb=0;
else if(b=='N')posb=1;
else if(b=='W')posb=2;
else if(b=='S')posb=3;
return (posb+4-posa)%4;
}
int main()
{
int m,n;
cin>>m>>n;
string s1,s2;
cin>>s1>>s2;
vector<int> ans1(n,100000);
vector<int> ans2(n,100000);
ans2[n-1]=0;
ans1[n-1]=rotiraj(s1[n-1],'S');
for(int i=n-2;i>=0;i--){
ans1[i]=min(ans1[i],ans1[i+1]+rotiraj(s1[i],'E'));
ans1[i]=min(ans1[i],ans2[i+1]+rotiraj(s1[i],'S')+rotiraj(s2[i],'E'));
ans2[i]=min(ans2[i],ans2[i+1]+rotiraj(s2[i],'E'));
ans2[i]=min(ans2[i],ans1[i+1]+rotiraj(s2[i],'N')+rotiraj(s1[i],'E'));
}
if(ans1[0]>=6000)cout<<-1<<endl;
else cout<<ans1[0]<<endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |