#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N, M, K;
if (!(cin >> N >> M >> K)) return 0;
vector<vector<pair<int,int>>> adj(N+1);
vector<pair<int,int>> edges(M+1);
for (int i = 1; i <= M; ++i) {
int u, v;
cin >> u >> v;
edges[i] = {u, v};
adj[u].push_back({v, i});
adj[v].push_back({u, i});
}
vector<int> vis(N+1, 0);
function<void(int)> dfs_conn = [&](int u){
vis[u] = 1;
for (auto pr: adj[u]) {
int v = pr.first;
if (!vis[v]) dfs_conn(v);
}
};
dfs_conn(1);
for (int i = 1; i <= N; ++i) {
if (!vis[i]) {
cout << -1 << '\n';
return 0;
}
}
vector<int> tin(N+1, 0), low(N+1, 0);
int timer = 0;
bool hasBridge = false;
function<void(int,int)> dfs = [&](int u, int pe) {
tin[u] = low[u] = ++timer;
for (auto pr : adj[u]) {
int v = pr.first, id = pr.second;
if (id == pe) continue;
if (!tin[v]) {
dfs(v, id);
low[u] = min(low[u], low[v]);
if (low[v] > tin[u]) {
hasBridge = true;
}
} else {
low[u] = min(low[u], tin[v]);
}
if (hasBridge) return;
}
};
dfs(1, -1);
if (hasBridge) {
cout << -1 << '\n';
return 0;
}
int C = M - (N - 1);
if (C <= 0) {
cout << -1 << '\n';
return 0;
}
int perDay = min(K, C);
int days = (M + perDay - 1) / perDay;
cout << days << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICAKICAgIGludCBOLCBNLCBLOwogICAgaWYgKCEoY2luID4+IE4gPj4gTSA+PiBLKSkgcmV0dXJuIDA7CiAgICB2ZWN0b3I8dmVjdG9yPHBhaXI8aW50LGludD4+PiBhZGooTisxKTsKICAgIHZlY3RvcjxwYWlyPGludCxpbnQ+PiBlZGdlcyhNKzEpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gTTsgKytpKSB7CiAgICAgICAgaW50IHUsIHY7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICBlZGdlc1tpXSA9IHt1LCB2fTsKICAgICAgICBhZGpbdV0ucHVzaF9iYWNrKHt2LCBpfSk7CiAgICAgICAgYWRqW3ZdLnB1c2hfYmFjayh7dSwgaX0pOwogICAgfQoKICAgIHZlY3RvcjxpbnQ+IHZpcyhOKzEsIDApOwogICAgZnVuY3Rpb248dm9pZChpbnQpPiBkZnNfY29ubiA9IFsmXShpbnQgdSl7CiAgICAgICAgdmlzW3VdID0gMTsKICAgICAgICBmb3IgKGF1dG8gcHI6IGFkalt1XSkgewogICAgICAgICAgICBpbnQgdiA9IHByLmZpcnN0OwogICAgICAgICAgICBpZiAoIXZpc1t2XSkgZGZzX2Nvbm4odik7CiAgICAgICAgfQogICAgfTsKICAgIGRmc19jb25uKDEpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gTjsgKytpKSB7CiAgICAgICAgaWYgKCF2aXNbaV0pIHsKICAgICAgICAgICAgY291dCA8PCAtMSA8PCAnXG4nOwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICB9CgogICAgdmVjdG9yPGludD4gdGluKE4rMSwgMCksIGxvdyhOKzEsIDApOwogICAgaW50IHRpbWVyID0gMDsKICAgIGJvb2wgaGFzQnJpZGdlID0gZmFsc2U7CiAgICBmdW5jdGlvbjx2b2lkKGludCxpbnQpPiBkZnMgPSBbJl0oaW50IHUsIGludCBwZSkgewogICAgICAgIHRpblt1XSA9IGxvd1t1XSA9ICsrdGltZXI7CiAgICAgICAgZm9yIChhdXRvIHByIDogYWRqW3VdKSB7CiAgICAgICAgICAgIGludCB2ID0gcHIuZmlyc3QsIGlkID0gcHIuc2Vjb25kOwogICAgICAgICAgICBpZiAoaWQgPT0gcGUpIGNvbnRpbnVlOwogICAgICAgICAgICBpZiAoIXRpblt2XSkgewogICAgICAgICAgICAgICAgZGZzKHYsIGlkKTsKICAgICAgICAgICAgICAgIGxvd1t1XSA9IG1pbihsb3dbdV0sIGxvd1t2XSk7CiAgICAgICAgICAgICAgICBpZiAobG93W3ZdID4gdGluW3VdKSB7CiAgICAgICAgICAgICAgICAgICAgaGFzQnJpZGdlID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGxvd1t1XSA9IG1pbihsb3dbdV0sIHRpblt2XSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGhhc0JyaWRnZSkgcmV0dXJuOwogICAgICAgIH0KICAgIH07CiAgICBkZnMoMSwgLTEpOwoKICAgIGlmIChoYXNCcmlkZ2UpIHsKICAgICAgICBjb3V0IDw8IC0xIDw8ICdcbic7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgaW50IEMgPSBNIC0gKE4gLSAxKTsKICAgIGlmIChDIDw9IDApIHsgCiAgICAgICAgY291dCA8PCAtMSA8PCAnXG4nOwogICAgICAgIHJldHVybiAwOwogICAgfQogICAgaW50IHBlckRheSA9IG1pbihLLCBDKTsKICAgIGludCBkYXlzID0gKE0gKyBwZXJEYXkgLSAxKSAvIHBlckRheTsKICAgIGNvdXQgPDwgZGF5cyA8PCAnXG4nOwogICAgcmV0dXJuIDA7Cn0=