#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll> dp;
ll id;
map<vector<ll>,ll> mp;
void dfs(ll node,vector<ll>& vis,vector<vector<ll>>& adj,vector<ll>& parent){
vis[node]=1;
for (auto u :adj[node]) {
if (vis[u]==0) {
parent[u]=node;
dfs(u,vis,adj,parent);
}
}
vector<ll> a;
for (auto u :adj[node]) {
if (u != parent[node]) {
a.push_back(dp[u]);
}
}
if (!a.empty()) {
sort(a.begin(), a.end());
}
if (mp.find(a)==mp.end()) {
mp[a]=id;
dp[node]=id;
id++;
} else {
dp[node]=mp[a];
}
}
int main() {
// your code goes here
id=1;
ll n;
cin>>n;
dp.assign(n+1,0);
vector<vector<ll>> adj(n+1);
for (ll i=1;i<=n-1;i++) {
ll u,v;
cin>>u>>v;
adj[u].push_back(v);
adj[v].push_back(u);
}
vector<ll> vis(n+1,0);
vector<ll> parent(n+1,0);
parent[1]=-1;
dfs(1,vis,adj,parent);
cout<<mp.size();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp2ZWN0b3I8bGw+IGRwOwpsbCBpZDsKbWFwPHZlY3RvcjxsbD4sbGw+IG1wOwp2b2lkIGRmcyhsbCBub2RlLHZlY3RvcjxsbD4mIHZpcyx2ZWN0b3I8dmVjdG9yPGxsPj4mIGFkaix2ZWN0b3I8bGw+JiBwYXJlbnQpewogICB2aXNbbm9kZV09MTsKICAgICAgICBmb3IgKGF1dG8gdSA6YWRqW25vZGVdKSB7CiAgICAgICAgaWYgKHZpc1t1XT09MCkgewogICAgICAgICAgICBwYXJlbnRbdV09bm9kZTsKICAgICAgICAgICAgZGZzKHUsdmlzLGFkaixwYXJlbnQpOwogICAgICAgIH0gCiAgICB9CiAgICB2ZWN0b3I8bGw+IGE7IAogICAgZm9yIChhdXRvIHUgOmFkaltub2RlXSkgewogICAgICAgIGlmICh1ICE9IHBhcmVudFtub2RlXSkgewogICAgICAgICAgICBhLnB1c2hfYmFjayhkcFt1XSk7CiAgICAgICAgfQogICAgfQogICAgaWYgKCFhLmVtcHR5KCkpIHsKICAgICAgICBzb3J0KGEuYmVnaW4oKSwgYS5lbmQoKSk7IAogICAgfQogICAgaWYgKG1wLmZpbmQoYSk9PW1wLmVuZCgpKSB7CiAgICAgICAgbXBbYV09aWQ7CiAgICAgICAgZHBbbm9kZV09aWQ7IAogICAgICAgIGlkKys7IAogICAgfSBlbHNlIHsKICAgICAgICBkcFtub2RlXT1tcFthXTsKICAgIH0KfQoKCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJaWQ9MTsKICAgIGxsIG47CiAgICBjaW4+Pm47CiAgICBkcC5hc3NpZ24obisxLDApOyAKICAgIHZlY3Rvcjx2ZWN0b3I8bGw+PiBhZGoobisxKTsgCiAgICBmb3IgKGxsIGk9MTtpPD1uLTE7aSsrKSB7CiAgICAgICAgbGwgdSx2OwogICAgICAgIGNpbj4+dT4+djsgCiAgICAgICAgYWRqW3VdLnB1c2hfYmFjayh2KTsgCiAgICAgICAgYWRqW3ZdLnB1c2hfYmFjayh1KTsgCiAgICB9CiAgICB2ZWN0b3I8bGw+IHZpcyhuKzEsMCk7IAogICAgdmVjdG9yPGxsPiBwYXJlbnQobisxLDApOyAKICAgIHBhcmVudFsxXT0tMTsgCiAgICAKICAgIGRmcygxLHZpcyxhZGoscGFyZW50KTsKICAgIGNvdXQ8PG1wLnNpemUoKTsKCXJldHVybiAwOwp9