#include <bits/stdc++.h>
using namespace std;
struct with {
  int x, y;
} wind[100005];
int x1, dy1, x2, y2;
int n;
with go;
int main() {
  scanf("%d%d%d%d", &x1, &dy1, &x2, &y2);
  go.x = x2 - x1;
  go.y = y2 - dy1;
  scanf("%d", &n);
  int i;
  for (i = 1; i <= n; i++) {
    char direc;
    scanf(" %c", &direc);
    if (direc == 'U') {
      wind[i].x = wind[i - 1].x;
      wind[i].y = wind[i - 1].y + 1;
    } else if (direc == 'D') {
      wind[i].x = wind[i - 1].x;
      wind[i].y = wind[i - 1].y - 1;
    } else if (direc == 'L') {
      wind[i].x = wind[i - 1].x - 1;
      wind[i].y = wind[i - 1].y;
    } else if (direc == 'R') {
      wind[i].x = wind[i - 1].x + 1;
      wind[i].y = wind[i - 1].y;
    }
  }
  long long ans = -1;
  long long l = 0, r = 2000000000000000000;
  while (l <= r) {
    long long mid = (l + r) / 2;
    long long windx, windy;
    windx = mid / n * wind[n].x + wind[mid % n].x;
    windy = mid / n * wind[n].y + wind[mid % n].y;
    long long req = abs(go.x - windx) + abs(go.y - windy);
    if (mid >= req) {
      ans = mid;
      r = mid - 1;
    } else
      l = mid + 1;
  }
  printf("%lld", ans);
  return 0;
}
