#include <bits/stdc++.h>
using namespace std;
int n;
struct node {
  long long x, y;
} s, t, dist[100005];
int dx[4] = {0, 0, -1, 1};
int dy[4] = {1, -1, 0, 0};
char wind[100005];
string mov = "UDLR";
long long pos, l, r, mid;
bool check(long long mid) {
  long long zq = mid / n, sy = mid % n;
  long long x = s.x + zq * dist[n].x + dist[sy].x;
  long long y = s.y + zq * dist[n].y + dist[sy].y;
  long long dis = abs(t.x - x) + abs(t.y - y);
  return dis <= mid;
}
int main() {
  cin >> s.x >> s.y >> t.x >> t.y;
  cin >> n >> wind;
  for (int i = 0; i < n; i++) {
    pos = -1;
    for (int j = 0; j < 4; j++) {
      if (wind[i] == mov[j]) pos = j;
    }
    dist[i + 1].x = dist[i].x + dx[pos];
    dist[i + 1].y = dist[i].y + dy[pos];
  }
  l = 0, r = 1e15;
  while (l <= r) {
    mid = (l + r) >> 1;
    if (check(mid)) {
      r = mid - 1;
    } else {
      l = mid + 1;
    }
  }
  if (l > 1e15)
    cout << -1 << endl;
  else
    cout << l << endl;
  return 0;
}
