#include<bits/stdc++.h>
#define ull unsigned long long
#define ins insert
using namespace std;
constexpr int maxn=1e7+10;
int read()
{
int x=0,f=1;
char ch=getchar();
while (ch<'0' || ch>'9')
{
if (ch == '-') f=-1;
ch=getchar();
}
while (ch>='0' && ch<='9')
{
x=(x<<1)+(x<<3)+ch-'0';
ch=getchar();
}
return x*f;
}
int n;
set<ull> s;
int h[maxn],to[maxn],nxt[maxn],tot;
void add(int x,int y) {tot++,to[tot]=y,nxt[tot]=h[x],h[x]=tot;}
ull hs[maxn],rd1,rd2;
ull rd(ull x)
{
x^=rd2;
x^=(x>>11);
x^=(x<<4);
x^=(x>>5);
x^=(x<<14);
return x+91919810;
}
void dfs(int x,int fa)
{
hs[x]=0;
for (int i=h[x];i;i=nxt[i])
{
int y=to[i];
if (y == fa) continue;
dfs(y,x);
hs[x]+=rd(hs[y]);
}
hs[x]+=rd1;
s.ins(hs[x]);
}
signed main()
{
srand(time(0));
n=read();
rd1=1ll*rand()*rand()%1145141919+1,rd2=1ll*rand()*rand()%1145141919+1;
for (int i=1;i<n;i++)
{
int x=read(),y=read();
add(x,y),add(y,x);
}
dfs(1,1);
printf("%d\n",(int)s.size());
return 0;
}