#include using namespace std; typedef long long ll; typedef long double ld; typedef pair ii; typedef vector vi; typedef vector vvi; typedef vector vvvi; typedef vector vvvvi; typedef vector vii; #define x first #define y second #define pb push_back #define eb emplace_back #define all(v) (v).begin(), (v).end() map D {{'N',0},{'E',90},{'S',180},{'W',270}}; ld conv(string X) { ll n = X.size(); if (n == 1) return D[X[0]]; ld res = (D[X[n-1]] + D[X[n-2]])/2; if (abs(res-D[X[n-1]]) > 90) res += 180; ld prev = res; for (ll i = max(0ll,n-28); i < n-2; i++) { res += D[X[i]]; res *= 0.5; if (abs(prev-res) > 90) res += 180; prev = res; } return res; } void run() { string X, Y; cin >> X >> Y; ld r = fmod(abs(conv(X)-conv(Y)),360); cout << min(r, 360-r) << endl; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout << fixed << setprecision(20); run(); return 0; }