#include <bits/stdc++.h>
using namespace std;
long long n;
const long long maxn = 1e5 + 5;
string s;
pair<long long, long long> loc[maxn];
pair<long long, long long> dir[255];
pair<long long, long long> rd;
long long sx, sy, ex, ey;
bool check(long long mid) {
  long long rod = mid / n;
  long long mod = mid % n;
  long long dtx = ex - rod * loc[n].first - loc[mod].first;
  long long dty = ey - rod * loc[n].second - loc[mod].second;
  return mid < abs(dtx) + abs(dty);
}
long long check2(long long mid) {
  long long rod = mid / n;
  long long mod = mid % n;
  long long dtx = ex - rod * loc[n].first - loc[mod].first;
  long long dty = ey - rod * loc[n].second - loc[mod].second;
  if (mid < abs(dtx) + abs(dty))
    return mid + 1;
  else if (mid > abs(dtx) + abs(dty)) {
    cout << 1;
    return mid - 1;
  } else
    return mid;
}
signed main() {
  cin >> sx >> sy >> ex >> ey;
  ex -= sx, ey -= sy;
  dir['U'] = {0, 1};
  dir['D'] = {0, -1};
  dir['L'] = {-1, 0};
  dir['R'] = {1, 0};
  cin >> n >> s;
  for (long long i = 1; i <= n; ++i) {
    loc[i].first = loc[i - 1].first + dir[s[i - 1]].first;
    loc[i].second = loc[i - 1].second + dir[s[i - 1]].second;
    rd.first += dir[s[i - 1]].first;
    rd.second += dir[s[i - 1]].second;
  }
  long long r = 1e18, l = 0;
  while (l < r) {
    long long mid = (l + r + 1) >> 1;
    if (check(mid))
      l = mid;
    else
      r = mid - 1;
  }
  if (l > 2e17)
    cout << -1;
  else
    cout << check2(l);
  return 0;
}
