#include <bits/stdc++.h>
using namespace std;
typedef int64_t ll;
typedef uint64_t ull;
char s[100001];
bool Check(ll day_cnt, const vector<int> &sumwindx, const vector<int> &sumwindy,
           const int tdx, int tdy) {
  int n = sumwindx.size();
  ll cycle_cnt = day_cnt / n;
  ll dx = sumwindx.back() * cycle_cnt;
  ll dy = sumwindy.back() * cycle_cnt;
  int r = day_cnt % n;
  if (r > 0) {
    dx += sumwindx[r - 1];
    dy += sumwindy[r - 1];
  }
  ll diff = llabs(dx - tdx) + llabs(dy - tdy);
  return diff <= day_cnt;
}
int main(int argc, char **argv) {
  int x1, y1;
  int x2, y2;
  int n;
  scanf("%d%d%d%d%d", &x1, &y1, &x2, &y2, &n);
  ll tdx = x2 - x1, tdy = y2 - y1;
  scanf("%s", s);
  vector<int> sumwindx(n), sumwindy(n);
  for (int i = 0; i < n; i++) {
    if (i == 0) {
      sumwindx[0] = sumwindy[0] = 0;
    } else {
      sumwindx[i] = sumwindx[i - 1];
      sumwindy[i] = sumwindy[i - 1];
    }
    switch (s[i]) {
      case 'U':
        sumwindy[i]++;
        break;
      case 'D':
        sumwindy[i]--;
        break;
      case 'L':
        sumwindx[i]--;
        break;
      case 'R':
        sumwindx[i]++;
      default:
        break;
    }
  }
  ll l = 1, r = 1e14;
  ll res = -1;
  while (l <= r) {
    ll mid = l + (r - l) / 2;
    if (Check(mid, sumwindx, sumwindy, tdx, tdy)) {
      res = mid;
      r = mid - 1;
    } else {
      l = mid + 1;
    }
  }
  printf("%" PRId64 "\n", res);
  return 0;
}
