#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
#define re(i, n) for (int i=0; i<n; i++)
#define re1(i, n) for (int i=1; i<=n; i++)
#define re2(i, l, r) for (int i=l; i<r; i++)
#define re3(i, l, r) for (int i=l; i<=r; i++)
#define rre(i, n) for (int i=n-1; i>=0; i--)
#define rre1(i, n) for (int i=n; i>0; i--)
#define rre2(i, r, l) for (int i=r-1; i>=l; i--)
#define rre3(i, r, l) for (int i=r; i>=l; i--)
#define ll long long
const int MAXN = 86400, INF = ~0U >> 2;
ll T0[MAXN + 1], T1[MAXN + 1];
void opr0(int No, ll c)
{
for (int i=No; i>0; i-=i&(-i)) T0[i] += c;
for (int i=No; i<=MAXN; i+=i&(-i)) T1[i] += c * No;
}
ll opr1(int No)
{
ll sum = 0;
for (int i=No+1; i<=MAXN; i+=i&(-i)) sum += T0[i] * No;
for (int i=No; i>0; i-=i&(-i)) sum += T1[i];
return sum;
}
int main()
{
int n, h0, m0, s0, h1, m1, s1, l, r; scanf("%d", &n);
ll res;
re(i, n) {
scanf("%d:%d:%d - %d:%d:%d", &h0, &m0, &s0, &h1, &m1, &s1);
l = h0 * 3600 + m0 * 60 + s0 + 1; r = h1 * 3600 + m1 * 60 + s1 + 1;
if (l - 1) opr0(l - 1, -1); opr0(r, 1); if (l > r) opr0(MAXN, 1);
}
scanf("%d", &n);
re(i, n) {
scanf("%d:%d:%d - %d:%d:%d", &h0, &m0, &s0, &h1, &m1, &s1);
l = h0 * 3600 + m0 * 60 + s0 + 1; r = h1 * 3600 + m1 * 60 + s1 + 1;
res = opr1(r); if (l - 1) res -= opr1(l - 1); if (l > r) res += opr1(MAXN);
printf("%.10lf\n", (double)res / (l <= r ? r - l + 1 : r - l + 1 + MAXN));
}
}