#include <bits/stdc++.h>
using namespace std;
template <typename T, typename U>
pair<T, U> operator+(const pair<T, U>& l, const pair<T, U>& r) {
  return {l.first + r.first, l.second + r.second};
}
vector<pair<long long, long long> > pref;
long long n, x1, x2, yone, y2;
pair<long long, long long> p;
bool chk(long long i) {
  long long x = p.first, y = p.second;
  long long r = i % n, d = i / n;
  x = x1 + (x - x1) * d;
  y = yone + (y - yone) * d;
  x += pref[r].first;
  y += pref[r].second;
  if (abs(x2 - x) + abs(y2 - y) <= i) return true;
  return false;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> x1 >> yone >> x2 >> y2;
  cin >> n;
  pref.resize(n + 1);
  string s;
  cin >> s;
  map<char, pair<long long, long long> > M;
  M['U'] = make_pair(0, 1);
  M['D'] = make_pair(0, -1);
  M['L'] = make_pair(-1, 0);
  M['R'] = make_pair(1, 0);
  p.first = x1;
  p.second = yone;
  pref[0] = {0, 0};
  for (int i = 1; i < s.size() + 1; i++) {
    pref[i] = pref[i - 1] + M[s[i - 1]];
    p = p + M[s[i - 1]];
  }
  long long l = 0, h = 1e18, mid, ans = 1e18;
  while (l <= h) {
    mid = l + (h - l) / 2;
    if (chk(mid)) {
      ans = min(ans, mid);
      h = mid - 1;
    } else
      l = mid + 1;
  }
  if (ans == 1e18)
    cout << -1 << endl;
  else
    cout << ans << endl;
}
