#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
#define ld long double
const int N = 1<<17;
int dx[N], dy[N], x[2], y[2];
int k, n;
ld sq(ld a){
return a * a;
}
ld dist(int x1, int y1, int x2, int y2){
return sqrtl(sq(x1 - x2) + sq(y1 - y2));
}
void get(string s){
for (int i=1;i<s.size();i++){
dx[i] = dx[i-1], dy[i] = dy[i-1];
if (s[i] == 'L')
dx[i]--;
if (s[i] == 'R')
dx[i]++;
if (s[i] == 'F')
dy[i]++;
if (s[i] == 'B')
dy[i]--;
}
}
ld poss(int i){
int L = 0, R = k - 1;
while (L + 2 < R){
int mid = (L + R) / 2;
int X = x[0] + dx[i] + mid * dx[n], Y = y[0] + dy[i] + mid * dy[n];
if (dist(X, Y, x[1], y[1]) <= dist(X+dx[n], Y+dy[n], x[1], y[1]))
R = mid;
else
L = mid;
}
ld mn = 1e9;
for (int j=L-10;j<=L+10;j++){
if (j < 0 or j >= k)
continue;
int X = x[0] + dx[i] + j * dx[n], Y = y[0] + dy[i] + j * dy[n];
mn = min(mn, dist(X, Y, x[1], y[1]));
}
return mn;
}
int main(){
cout<<fixed<<setprecision(10);
string s;
cin>>k>>s>>x[0]>>y[0]>>x[1]>>y[1];
n = s.size(), s = '0' + s;
get(s);
ld mn = 1e9, mx = 0;
for (int i=1;i<=n;i++){
mx = max(mx, dist(x[0] + dx[i], y[0] + dy[i], x[1], y[1]));
mx = max(mx, dist(x[0] + dx[i] + (k - 1) * dx[n], y[0] + dy[i] + (k-1) * dy[n], x[1], y[1]));
// mn = max(mn, dist(x[0] + dx[1], y[0] + dy[1], x[1], y[1]));
mn = min(mn, poss(i));
}
cout<<mn<<" "<<mx<<endl;
}