#include <bits/stdc++.h>
using namespace std;
long long int _sieve_size;
bitset<10000010> bs;
vector<int> primes;
void sieve(long long int upperbound) {
  _sieve_size = upperbound + 1;
  bs.set();
  bs[0] = bs[1] = 0;
  for (long long int i = 2; i <= _sieve_size; i++)
    if (bs[i]) {
      for (long long int j = i * i; j <= _sieve_size; j += i) bs[j] = 0;
      primes.push_back((int)i);
    }
}
bool isPrime(long long int N) {
  if (N <= _sieve_size) return bs[N];
  for (int i = 0; i < (int)primes.size(); i++)
    if (N % primes[i] == 0) return false;
  return true;
}
int main() {
  int h1, m1, h2, m2, oh, om;
  char tmp;
  cin >> h1 >> tmp >> m1;
  cin >> h2 >> tmp >> m2;
  om = m1 - m2;
  if (om < 0) {
    om += 60;
    h1 -= 1;
  }
  oh = h1 - h2;
  if (oh < 0) {
    oh += 24;
  }
  if (oh < 10) {
    cout << 0 << oh;
  } else
    cout << oh;
  cout << tmp;
  if (om < 10) {
    cout << 0 << om;
  } else
    cout << om;
  return 0;
}
