#include <bits/stdc++.h>
using namespace std;
long long power(long long x, long long n, long long m) {
  assert(n >= 0);
  x %= m;
  long long res = 1;
  while (n > 0) {
    if (n % 2 == 1) res = res * x % m;
    x = x * x % m;
    n /= 2;
  }
  return res;
}
long long log(long long base, long long number) {
  int x = base;
  int count = 1;
  while (base < number) {
    base *= x;
    count++;
  }
  return count;
}
long long x1, y_1, x2, y2;
long long n;
string s;
vector<pair<long long, long long> > pos;
bool check(long long x) {
  long long fakex = x;
  pair<long long, long long> currpos = {pos[n].first * (x / n) + x1,
                                        pos[n].second * (x / n) + y_1};
  x %= n;
  currpos.first += pos[x].first;
  currpos.second += pos[x].second;
  return abs(x2 - currpos.first) + abs(y2 - currpos.second) <= fakex;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> x1 >> y_1 >> x2 >> y2;
  cin >> n >> s;
  pos.push_back({0, 0});
  for (signed long long i = (signed long long)(0); i < (signed long long)(n);
       i++) {
    if (s[i] == 'U') {
      pos.push_back({pos.back().first, pos.back().second + 1});
    }
    if (s[i] == 'D') {
      pos.push_back({pos.back().first, pos.back().second - 1});
    }
    if (s[i] == 'L') {
      pos.push_back({pos.back().first - 1, pos.back().second});
    }
    if (s[i] == 'R') {
      pos.push_back({pos.back().first + 1, pos.back().second});
    }
  }
  long long l = 0, r = 1e18;
  while (check(r)) {
    long long mid = l + (r - l) / 2;
    if (check(mid))
      r = mid - 1;
    else
      l = mid + 1;
  }
  if (r >= 1e18) r = -2;
  cout << ++r;
}
