#include using namespace std; namespace { typedef double real; typedef long long ll; template ostream& operator<<(ostream& os, const vector& vs) { if (vs.empty()) return os << "[]"; os << "[" << vs[0]; for (int i = 1; i < vs.size(); i++) os << " " << vs[i]; return os << "]"; } template istream& operator>>(istream& is, vector& vs) { for (auto it = vs.begin(); it != vs.end(); it++) is >> *it; return is; } int to_i(string s) { istringstream is(s); int n; is >> n; return n; } int N, L; vector S; void input() { cin >> N >> L; L *= 60; S.resize(N); for (int i = 0; i < N; i++) { string buf; cin >> buf; int m = to_i(buf.substr(0, 2)); int s = to_i(buf.substr(3, 2)); S[i] = m * 60 + s; } } ll COMB[100][100]; void init(int N, int K) { for (int i = 0; i <= N; i++) for (int j = 0; j <= K; j++) COMB[i][j] = 0; COMB[0][0] = 1; for (int n = 1; n <= N; n++) { COMB[n][0] = 1; for (int k = 1; k <= K; k++) { COMB[n][k] = (COMB[n - 1][k - 1] + COMB[n - 1][k]); } } } ll comb(int N, int K) { if (N < K) return 0; return COMB[N][K]; } int sum(int bit, const vector::iterator& from, const vector::iterator& to) { int ans = 0; int n = to - from; for (int i = 0; i < n; i++) { if (bit & (1 << i)) { ans += *(from + i); } } return ans; } void solve() { init(N, N); vector< vector > A(N + 1, vector(N + 1, 0)); for (int i = 0; i < N; i++) { vector ss; for (int j = 0; j < N; j++) { if (i == j) continue; ss.push_back(S[j]); } int M1 = (N - 1) / 2; int M2 = (N - 1) - M1; vector< vector > xs(N); for (int bit = 0; bit < (1 << M2); bit++) { int s = sum(bit, ss.begin() + M1, ss.end()); //cout << bit << " && " << s << endl; xs[__builtin_popcount(bit)].push_back(s); } for (int j = 0; j < N; j++) { sort(xs[j].begin(), xs[j].end()); //cout << j << " -> " << xs[j] << endl; } for (int bit = 0; bit < (1 << M1); bit++) { int s = sum(bit, ss.begin(), ss.begin() + M1); int cnt = __builtin_popcount(bit); for (int j = 0; j < N; j++) { int y = upper_bound( xs[j].begin(), xs[j].end(), L - s - 1 ) - xs[j].begin(); A[i][cnt + j] += y; } } } real ans = 0; for (int i = 0; i < N; i++) { for (int k = 0; k < N; k++) { ans += (1.0 / N) * (real(A[i][k]) / comb(N - 1, k)); } } cout << setprecision(15) << ans << endl; } } int main() { input(); solve(); return 0; }